阻止ZipOutputStream写入大文件

时间:2019-04-05 12:32:19

标签: file byte fileinputstream zipoutputstream

我有一个典型的实现,如下所示,它使用linux centos 6.9环境中的xlsx文件文件夹编写一个zip文件。问题在于,有时由于某个文件,zip.write()操作似乎会无限期地挂起并增长zip文件,从而导致磁盘空间在环境中耗尽。

我想实现一个故障保险柜,以某种方式检测到写入操作错误地增长了zip文件,从而阻止了这种情况的发生。 Java中有一种干净的方法可以实现这一目标吗?

FileInputStream fis = new FileInputStream(file);

// we want the zipEntry's path to be a relative path that is relative
// to the directory being zipped, so chop off the rest of the path
String zipFilePath = file.getCanonicalPath().substring(
    directoryToZip.getCanonicalPath().length() + 1,
    file.getCanonicalPath().length());

ZipEntry zipEntry = new ZipEntry(zipFilePath);
zos.putNextEntry(zipEntry);

byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) >= 0) {
    zos.write(bytes, 0, length);
}

zos.closeEntry();
fis.close();

0 个答案:

没有答案