好的,所以我正在制作一个具有服务器和客户端的 Java 程序,并且我正在从服务器向客户端发送一个 Zip 文件。我已经把文件发下来了,差不多。但是收到后我发现了一些不一致的地方。我的代码并不总是获得完整的存档。我猜它在 BufferedReader 完成之前就终止了。这是客户端的代码:
public void run(String[] args) {
try {
clientSocket = new Socket("jacob-custom-pc", 4444);
out = new PrintWriter(clientSocket.getOutputStream(), true);
in = new BufferedInputStream(clientSocket.getInputStream());
BufferedReader inRead = new BufferedReader(new InputStreamReader(in));
int size = 0;
while(true) {
if(in.available() > 0) {
byte[] array = new byte[in.available()];
in.read(array);
System.out.println(array.length);
System.out.println("recieved file!");
FileOutputStream fileOut = new FileOutputStream("out.zip");
fileOut.write(array);
fileOut.close();
break;
}
}
}
} catch(IOException e) {
e.printStackTrace();
System.exit(-1);
}
}
那么,在写入文件之前,我如何确定完整的存档已经存在呢?