私のコードによると、フォルダにファイルが含まれている場合は正常に送信されますが、フォルダにフォルダが含まれている場合はクライアント側にフォルダが作成されません。
サーバーコード:
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();
}
}
エラーは表示されませんが、代わりにクライアント側に名前の匿名ファイル(サーバー側のフォルダー)が作成されます。私のコードの何が問題なのか教えてください!