This is related to my previous question - DataInputStream giving java.io.EOFException
In that Client-Server app there is method to retrieve file sent from server and save to a file.
Client.java -
public void receiveFile(InputStream is, String fileName) throws Exception {
int filesize = 6022386;
int bytesRead;
int current = 0;
byte[] mybytearray = new byte[filesize];
System.out.println("Receving File!");
FileOutputStream fos = new FileOutputStream("RECEIVED_"+fileName);
BufferedOutputStream bos = new BufferedOutputStream(fos);
bytesRead = is.read(mybytearray, 0, mybytearray.length);
current = bytesRead;
System.out.println(bytesRead);
do {
bytesRead = is.read(mybytearray, current,
(mybytearray.length - current));
System.out.println(bytesRead);
if (bytesRead >= 0)
current += bytesRead;
} while (bytesRead > -1);
System.out.println("Loop done");
bos.write(mybytearray, 0, current);
bos.flush();
bos.close();
}
}
Server.Java
public void sendFile(OutputStream os, String fileName) throws Exception {
File myFile = new File(fileName);
byte[] mybytearray = new byte[(int) myFile.length() + 1];
FileInputStream fis = new FileInputStream(myFile);
BufferedInputStream bis = new BufferedInputStream(fis);
bis.read(mybytearray, 0, mybytearray.length);
System.out.println("Sending File!");
os.write(mybytearray, 0, mybytearray.length);
os.flush();
bis.close();
}
As you can see there are several stranded outs in client's receiveFile
method. here is the output i received.
The issue is that method don't complete its task and never reached to System.out.println("Loop done");
What's the issue ?