【发布时间】:2012-06-04 21:05:39
【问题描述】:
我的作业需要帮助,任何帮助将不胜感激。我可以毫无问题地发送小文件。但是当我尝试发送时,假设一个 1GB 文件字节数组发送 OutOfMemoryError,所以我需要一个更好的解决方案来将文件从服务器发送到客户端。如何改进此代码并发送大文件,请帮助我。
服务器代码:
FileInputStream fis = new FileInputStream(file);
byte[] fileByte = new byte[fis.available()]; //This causes the problem.
bytesRead = fis.read(fileByte);
oos = new ObjectOutputStream(sock.getOutputStream());
oos.writeObject(fileByte);
客户代码:
ois = new ObjectInputStream(sock.getInputStream());
byte[] file = (byte[]) ois.readObject();
fos = new FileOutputStream(file);
fos.write(file);
【问题讨论】:
-
"sends out of memory exception" Java 中没有这样的东西,DYM
OutOfMemoryError?如果是,请具体说明,如果不是,请说明(也具体说明)。 -
顺便说一句-您的第一个代码似乎暗示输入文件始终包含序列化对象。是这样吗?
-
哦,对不起,OutOfMemoryError 也不例外。而且我不知道如果文件包含序列化对象,服务器发送客户端请求的任何文件是什么意思。
-
ObjectOutputStream和ObjectInputStream用于序列化对象。如果内容是“任何旧字节”,则代码不应使用它们。 -
好的,我会这样做,谢谢你,我是新来的。
标签: java bytearray inputstream outputstream