2013-06-13 2 views
0

У меня есть .taz-файл, который мне нужно распаковать и получить контент. Я провел исследование и нашел коммерческую библиотеку, предлагающую эту функцию (Here is the link)Разархивируйте файл .taz с помощью Java

Есть ли какой-либо бесплатный метод с открытым исходным кодом, который я могу использовать для извлечения содержимого из .taz-файла с помощью Java?

+0

Если это вариант для вас, вы всегда можете использовать команды из ОС. – fge

+1

Очевидно, что дубликат *, если вы знаете * '.taz', означает кодировку LZW. – Raedwald

ответ

1

вы можете попробовать apache compress, я использовал его некоторое время, прежде чем (для другого сжатия), но он может работать как почтовый индекс и деготь (не совсем уверен, что TAZ)

0

Я хотел бы рекомендовать вам использовать консольный инструмент для сжатия/разжимания данных, если это приемлемо. Почти все java lib имеют много плохих сторон: более низкая производительность, используя гораздо больше памяти и больше CPU. У меня возникла проблема с распаковкой нескольких больших файлов (для воспроизведения, файл должен быть более 2 ГБ)

Я использую следующий код, чтобы распаковать список сжатых файлов.

public int extractFiles(final String zipFile, final File folder, final String[] neededFiles) throws IOException { 

    try { 
     final String filesString = StringUtils.join(neededFiles, " "); 
     final String command = "/bin/tar -xvf " + zipFile + " " + filesString; 
     logger.info("Start unzipping: {} into the folder {}", command, folder.getPath()); 
     final Runtime r = Runtime.getRuntime(); 
     final Process p = r.exec(command, null, folder); 
     logger.debug("process started"); 
     final int returnCode = p.waitFor(); 

     if (logger.isWarnEnabled()) { 
      final BufferedReader is = new BufferedReader(new InputStreamReader(p.getInputStream())); 
      String line; 
      while ((line = is.readLine()) != null) { 
       logger.warn(line); 
      } 
      final BufferedReader is2 = new BufferedReader(new InputStreamReader(p.getErrorStream())); 
      while ((line = is2.readLine()) != null) { 
       logger.warn(line); 
      } 
     } 

     logger.info("File {} unzipped [code = {}]", zipFile, returnCode); 
     return returnCode; 
    } catch (final InterruptedException e) { 
     logger.error("Error", e); 
     return -1; 
    } 

} 

Этот вариант намного быстрее и не требует большой памяти. Конечно, эта платформа метода зависела, но работает на всех (почти всех) Unix-системах.

P.S. на самом деле большинство кода просто записывает :).

+0

Слишком общий. Не отвечает на вопрос! – javadev

Смежные вопросы