Я использую TarInputStream() для чтения содержимого tar-файла и хранения всех файлов из него в определенном месте. Я хочу создать папку с именем, аналогичным файлу tar, и сохранить все мои файлы в этой папке. Например, если у меня есть tar-файл test.tar.gz с файлами test1 и test2 в нем, мой код должен создать папку по тесту имени и извлечь файлы tar в эту папку.Назовите папку Zip с именем zip-файла
Вот код, который я написал.
TarInputStream tin = new TarInputStream(new GZIPInputStream(new FileInputStream(new File(tarFileName))));
TarEntry tarEntry = tin.getNextEntry();
while (tarEntry != null) {// create a file with the same name as tar entry
File destPath = new File(dest.toString() + File.separatorChar
+ tarEntry.getName());
FileOutputStream fout = new FileOutputStream(destPath);
tin.copyEntryContents(fout);
fout.close();
///services/advert/lpa/dimenions/data/advertiser/
Path inputFile = new Path(destPath.getAbsolutePath());
//To remove the local files set the flag to true
fs.copyFromLocalFile(inputFile, filenamepath);
tarEntry = tin.getNextEntry();
}
Строка tarFileName = "/ TMP/lpa_1_454_20111117011749.tar.gz"; Файл dest = новый файл ("/ tmp/test /"); Итак, я хочу, чтобы все файлы были извлечены под именем папки lpa_1_454_20111117011749. Но я не могу извлечь это имя! – RFT
Ваш код в сочетании с этим ответом должен достичь того, чего вы ожидаете. Не могли бы вы объяснить, что вы подразумеваете под «неспособным извлечь это имя»? Предполагая, что 'lpa _...' является именем файла в TAR-файле, это должно быть возвращено' tarEntry.getName() 'и в результате получается' destPath' of "/ tmp/test/tmp/lpa _...". Конечно, здесь есть 2-й «tmp», но это действительно единственный «безопасный» способ сделать это - если вы не предоставите возможность отключить известное количество компонентов пути из имен файлов TAR, - но это делает некоторые довольно серьезные предположения о каждом файле TAR, который вы ожидаете обработать. – ziesemer
lpa_ .. является tar-файлом, из которого я извлекаю файлы. Я могу извлечь имена файлов с помощью tarEntry.getName(), но не могу извлечь имя файла tar lpa _... – RFT