Я сделал это так, он работает отлично, вы можете взглянуть:
send
byte[] done = new byte[3];
String str = "done"; //randomly anything
done = str.getBytes();
for(int i =0; i < files.size(); i++){
System.out.println(files.get(i).getName());
FileInputStream fis = new FileInputStream(files.get(i));
while((n =fis.read(buf)) != -1){
dos.write(buf,0,n);
System.out.println(n);
dos.flush();
}
//should i close the dataoutputstream here and make a new one each time?
dos.write(done,0,3);
dos.flush();
}
//or is this good?
dos.close();
recieve
for(int i = 0; i < files.size();i++){
System.out.println("Receiving file: " + files.get(i).getName());
//create a new fileoutputstream for each new file
fos = new FileOutputStream("C:\\users\\tom5\\desktop\\salestools\\" +files.get(i).getName());
//read file
while((n = dis.read(buf)) != -1 && n!=3 ){
fos.write(buf,0,n);
fos.flush();
}
fos.close();
}