Java Compress Большой файл - PullRequest
2 голосов
/ 01 июля 2011

Я работаю над приложением, которое работает с некоторыми очень большими файлами, каждый размером около 180 МБ, и их 3.Я хотел бы добавить опцию в мое приложение для резервного копирования этих файлов, сжимая их в zip или tar или что-то еще.Каков наилучший вариант - сжать их как можно больше в Java?Tar?Zip?Gzip

Ответы [ 3 ]

5 голосов
/ 01 июля 2011

Вы можете сделать это программно, используя Apache Compress .

2 голосов
/ 01 июля 2011

Посмотрите на классы в пакете java.util.zip .

1 голос
/ 01 июля 2011

Хорошо, пошли с zip, вот метод, который я использовал. Я нашел его в Интернете и изменил его, чтобы спрятать путь, а затем просто увеличил буфер, немного получил около 450 МБ данных до 100 МБ, так что неплохо :) спасибо за помощь

public void zipper(String[] filenames, String zipfile){
        byte[] buf = new byte[2048];
        try {
            String outFilename = zipfile;
            ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));
            for (int i=0; i<filenames.length; i++) {
                FileInputStream in = new FileInputStream(filenames[i]);
                File file = new File(filenames[i]);
                out.putNextEntry(new ZipEntry(file.getName()));
                int len;
                while ((len = in.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }
                out.closeEntry();
                in.close();
            }
            out.close();
        } catch (IOException e) {
        }

    }

Плюс 1 для вас обоих:)

...