Задача. Есть папка на 50 гигабайт, её нужно максимально сжать. Использую apache commons compress.
Снизу метод с помощью которого добавляю файлы
private static void addToArchiveCompression(SevenZOutputFile out, File file, String dir) throws IOException {
String name = dir + File.separator + file.getName();
if (file.isFile()){
SevenZArchiveEntry entry = out.createArchiveEntry(file, name);
entry.setContentMethods(Arrays.asList(new SevenZMethodConfiguration(SevenZMethod.DEFLATE, 9)));
out.putArchiveEntry(entry);
FileInputStream in = new FileInputStream(file);
byte[] b = new byte[1024];
int count = 0;
while ((count = in.read(b)) > 0) {
out.write(b, 0, count);
}
out.closeArchiveEntry();
} else if (file.isDirectory()) {
File[] children = file.listFiles();
if (children != null){
for (File child : children){
addToArchiveCompression(out, child, name);
}
}
} else {
LOG.error(file.getName() + " is not supported");
}
}
Тестирую на 150мб папке, после выполнения кода ужимается на 148мб. Сжимая через программу 7z сжимает до 28мб. Возможно ли добиться того же результата?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости