60
задан 25 November 2008 в 00:48

1 ответ

Вот версия на основе этот более ранний ответ Dan Borza, который использует Apache Сжатие палаты общин и NIO Java (т.е. Путь вместо Файла). Это также делает несжатие и не смолящий в одном потоке, таким образом, нет никакого промежуточного создания файла.

public static void unTarGz( Path pathInput, Path pathOutput ) throws IOException {
    TarArchiveInputStream tararchiveinputstream =
        new TarArchiveInputStream(
            new GzipCompressorInputStream(
                new BufferedInputStream( Files.newInputStream( pathInput ) ) ) );

    ArchiveEntry archiveentry = null;
    while( (archiveentry = tararchiveinputstream.getNextEntry()) != null ) {
        Path pathEntryOutput = pathOutput.resolve( archiveentry.getName() );
        if( archiveentry.isDirectory() ) {
            if( !Files.exists( pathEntryOutput ) )
                Files.createDirectory( pathEntryOutput );
        }
        else
            Files.copy( tararchiveinputstream, pathEntryOutput );
    }

    tararchiveinputstream.close();
}
1
ответ дан 1 November 2019 в 10:09

Другие вопросы по тегам:

Похожие вопросы: