【发布时间】:2014-06-15 07:48:22
【问题描述】:
我正在尝试将 500mb 到 1.5gb 之间的大文件写入磁盘。
我用zipOutputStream 压缩然后通过网络发送
但在客户端,当我试图解压缩和
写吧,它给了我Java heap space.异常
try (FileOutputStream fos = new FileOutputStream(outFile)) {
int fileLength = (int)zipEntry.getSize();
byte[] fileByte = new byte[fileLength];
zips.read(fileByte);
fos.write(fileByte);
}
我知道为一个字节数组分配相当大的内存,但我怎么可能修复它?
【问题讨论】:
-
您可以一次读取/写入文件的一部分。这就是 Stream 的设计用途。你一次读/写 8K 怎么样?
-
@PeterLawrey 如何为流分配大小?
-
你也可以用
Files.copy(zips, outFile.toPath());完成同样的事情。见here。 -
@VGR 想让它成为一个答案吗?
标签: java file exception client-server