Задача. Есть папка на 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мб. Возможно ли добиться того же результата?
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости