Как получить имя TAR в GZIP, а также количество TAR - PullRequest
1 голос
/ 17 сентября 2011

Мне было интересно, есть ли какой-нибудь Java API для получения имени файла TAR в файле GZIP, а также количества файлов TAR в нем. (Не уверен, что в GZIP разрешено несколько TAR)

Так я получаю доступ к файлам / каталогам в файле TAR

    FileInputStream fis = new FileInputStream(new File(sourceFile));
    GZIPInputStream gin = new GZIPInputStream(fis);
    TarInputStream tin = new TarInputStream (gin);

    TarEntry tarEntry = tin.getNextEntry();  

Мне нужно проверить, не распаковал ли я соответствующий файл TAR, поэтому мне нужна информация об имени. Мне также нужно убедиться, что существует только один файл TAR, поэтому мне нужно количество TAR.

Ответы [ 2 ]

1 голос
/ 17 сентября 2011

Хотя файлы GZIP могут содержать некоторую метаинформацию, включая исходное имя файла, которое не поможет вам в реальности. Это имя файла во многих случаях недопустимо, потому что gzip (1) не знал имя при создании файла, потому что он получил данные не из файловой системы, а через дескриптор файла pipe.

Поэтому обычное соглашение состоит в том, что имя gzip-файла совпадает с исходным именем файла с добавленным «.gz» или, при желании, заменой суффикса «.tar» на «.tgz».

С хорошей стороны: GZIP-файл может содержать только один поток данных (в данном случае он также называется файлом), следовательно, только один файл TAR. Это, конечно, исключает злонамеренные случаи, когда кто-то объединяет несколько файлов, вызывает gzips для результата и называет его " .tar.gz" или " .tgz".

0 голосов
/ 17 сентября 2011

Ответ на второй вопрос заключается в том, что файл GZIP содержит только один файл. Если бы (гипотетически) он содержал более одного файла (tar или иным образом), не было бы простого способа их разделить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...