Остановить ZipOutputStream от записи больших файлов - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть типичная реализация, как показано ниже, которая записывает zip-файл, используя папку с файлами xlsx в среде linux centos 6.9 в качестве источника.Проблема заключается в том, что иногда операция 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();
...