Как читать файл .gz или .bzip2 в java

У меня есть файлы .gz и .bzip2, и мне нужно, чтобы они были извлечены и отображены. Я просмотрел пару мест, где упоминается использование утилиты zip4j. Могу ли я использовать это для извлечения и отображения файлов? Пожалуйста, дай мне знать.

Я сослался на сообщение Распакуйте архив BZIP2 и попытался реализовать, как показано ниже, но я не уверен, что передать в FileOutputStream, и это дает мне ошибку. Кроме того, можно ли создать объект файла после его распаковки. Пожалуйста, помогите. Еще раз спасибо за помощь.

 if (getExtension(filename).equals("bz2")) {
                        try {
                        FileInputStream fin = new FileInputStream("C:\\temp\\test.bz2");
                        BufferedInputStream in = new BufferedInputStream(fin);
                        FileOutputStream out = new FileOutputStream("archive.tar");
                        BZip2CompressorInputStream bzIn = new BZip2CompressorInputStream(in);
                        int buffersize = 1024;
                        final byte[] buffer = new byte[buffersize];
                        int n = 0;
                        while (-1 != (n = bzIn.read(buffer))) {
                            out.write(buffer, 0, n);
                        }
                        out.close();
                        bzIn.close();
                        }
                     catch (Exception e) {
                        throw new Error(e.getMessage());
                    }

Заранее спасибо.

~ Акшита


person Akshitha    schedule 15.08.2014    source источник


Ответы (1)


Расширение файла .gz указывает на использование сжатия GZIP. Вы можете использовать GZIPInputStream для открытия GZIP в java 7 SDK: http://docs.oracle.com/javase/7/docs/api/java/util/zip/GZIPInputStream.html

Сжатие / распаковка BZIP2 не поддерживается библиотеками Java SDK, кстати, и вам придется использовать стороннюю библиотеку, такую ​​как Apache Commons Compress

Упомянутая вами библиотека, кажется (с очень краткого обзора) поддерживает только формат ZIP, а не GZIP вариантов BZIP2, которые отличаются.

Обратите внимание, что в отличие от сжатия ZIP, GZIP сжимает все файлы в один пакет, поэтому вы не можете извлечь один файл, не распаковав весь пакет (или, может быть, пока вы не наберете все нужные байты).

person Lior Bar-On    schedule 15.08.2014