0
我想根據我的代碼發送文件夾在網絡上,如果一個文件夾包含它發送成功的文件,但它不會在客戶端創建一個文件夾,如果文件夾包含內部文件夾?在Java網絡中創建文件夾
服務器代碼:
ObjectOutputStream oos = new ObjectOutputStream(connection.getOutputStream());
File file = new File("home/");
File[] children = file.listFiles();
if (children != null) {
for (File child : children) {
all.add(child);
if(!child.isDirectory()){
oos.writeObject(child.getName());
FileInputStream fis = new FileInputStream(child);
while ((bytesRead = fis.read(buffer)) > 0) {
oos.writeObject(bytesRead);
oos.writeObject(Arrays.copyOf(buffer, buffer.length));
}
}
}
}
客戶端代碼:
oos = new ObjectOutputStream(theSocket.getOutputStream());
ois = new ObjectInputStream(theSocket.getInputStream());
out = new PrintWriter(theSocket.getOutputStream());
while (true) {
Object o = ois.readObject();
File file = new File(o.toString());
if(file.isDirectory())
File Dir = new File("new/").mkdir();
if(!file.isDirectory()){
FileOutputStream fos = new FileOutputStream(o.toString());
do {
o = ois.readObject();
bytesRead = (Integer) o;
o = ois.readObject();
buffer = (byte[])o;
fos.write(buffer, 0, bytesRead);
}
while (bytesRead == BUFFER_SIZE);
fos.close();
}
}
它不顯示任何錯誤,而是創建名稱在客戶端的匿名文件(在服務器端文件夾)。請告訴我我的代碼有什麼問題!
你確定你需要這個斜線呢? 'new File(「new /」)。mkdir()' – theMarceloR
是的,沒有問題,只是用它在同一個目錄中創建文件夾 –
對不起,只是想澄清你想解釋什麼:「我想在網絡上發送文件夾「=您想通過網絡將File對象的實例(目錄)發送到給定的目的地。 「根據我的代碼,如果一個文件夾包含文件,它會發送成功」..你使用無限循環?爲什麼不創建計劃任務來不時驗證該文件夾? (http://quartz-scheduler.org/)。 「但它不會在客戶端創建文件夾,如果文件夾包含內部文件夾?」..什麼?對不起,我不明白這個問題。 – theMarceloR