我有一个客户端服务器应用程序,它们通过 objectoutputstream 和 objectinputstream 进行通信。我将序列化对象从一个发送到另一个,但现在我也想发送文件。如果我在序列化对象中传递文件的字节 [],它可以被传输,但对象停留在 objectoutputstream 和 objectinputstream 中,如果文件足够大,在发送一些之后,我得到内存异常。如果我像这样发送它:
File file = new File("C:\\a.txt");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] buffer = new byte[1024*1024*10];
int n = -1;
while((n = bis.read(buffer))!=-1) {
oos.write(buffer,0,n);
}
并阅读:
while ((fromServer = ois.read()) != null) {
}
效果很好。
我的问题是,我是否必须实现一个系统才能知道我是必须写对象/读对象还是只写/读?我是否必须摆脱序列化通信,我是否必须创建另一个用于读写的流?