Java 使用ObjectOutputStream和ObjectInputStream
假设:Java 使用ObjectOutputStream和ObjectInputStream,java,objectinputstream,objectoutputstream,bufferedinputstream,Java,Objectinputstream,Objectoutputstream,Bufferedinputstream,假设: ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(remote.getOutputStream())); ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(remote.getInputStream())); 在发送“initiate file send”消息和大小并成功读取另一端的字符串
ObjectOutputStream out =
new ObjectOutputStream(new BufferedOutputStream(remote.getOutputStream()));
ObjectInputStream in =
new ObjectInputStream(new BufferedInputStream(remote.getInputStream()));
在发送“initiate file send”消息和大小并成功读取另一端的字符串和长数字(您可以假设我已经处理了它们)后,我希望能够编写整个文件,而不必执行新的OutputStream。
到目前为止,我所做的是:
InputStream buf = new BufferedInputStream(new FileInputStream(file));
out.writeUnshared(new PeerProtocol(PeerProtocol.Type.FILE, file.getName(), file.length()));
int sum = 0, len;
byte[] buffer = new byte[remote.getSendBufferSize()];
out.flush();
out.reset();
while ((len = buf.read(buffer)) > 0) {
out.write(buffer, 0, len);
sum += len;
sendFileDialogController.updatePercentage((double) sum / file.length() * 100);
}
// System.out.println("done sending");
//out.flush(); didnt work neither
sendFileDialogController.updatePercentage(100);
buf.close();
问题是我总是缺少最后几个字节,所以文件已损坏,无法使用。如何解决此问题?在关闭while循环之前,尝试在while循环之后刷新流。遗憾的是,这样做不起作用