7z степень сжатия архива

166
27 августа 2019, 16:30

Задача. Есть папка на 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мб. Возможно ли добиться того же результата?

READ ALSO
Некорректный вывод в Java

Некорректный вывод в Java

Решал простою задачу на Java, и столкнулся с тем что программа некорректно выводит данные

148
Hibernate merge() сохраняет дубликаты

Hibernate merge() сохраняет дубликаты

В Spring MVC приложении я имею упрощенную модель следующего видаКласс User, у которого есть список файлов:

118
Общее кратное число, оптимизация

Общее кратное число, оптимизация

Есть программа, которая работает, но числа long очень долго думает, а иногда и не все выписываетУсловия : программа должна работать пока не вводится...

131