我正在使用Apache Common Compress库解压缩tar.gz文件。我的情况是tar文件中的文件层次结构就是这样。
现在,将使用以下代码将这些文件提取到定义明确的路径:
try (TarArchiveInputStream fin = new TarArchiveInputStream(new GzipCompressorInputStream(new FileInputStream(inFolderPath)))){
TarArchiveEntry entry;
while ((entry = fin.getNextTarEntry()) != null) {
if (entry.isDirectory()) {
continue;
}
File curfile = new File(outFolderPath, entry.getName());
File parent = curfile.getParentFile();
if (!parent.exists()) {
parent.mkdirs();
}
IOUtils.copy(fin, new FileOutputStream(curfile));
}
} catch (IOException e) {
Debug.logError(e, module);
}
文件夹A的名称会随时间变化,因为其名称后会附加一个日期值。我需要从其他一些代码访问B和C(始终使用相同的名称)文件。
有什么方法可以跳过A [根目录]并将B&C直接提取到所需位置。
当前,我已经编写了移动文件和删除根目录的代码:
File dir = new File(unzipDir);
File rootDir = dir.listFiles()[0];
File[] directoryListing = rootDir.listFiles();
if (directoryListing != null) {
for (File child : directoryListing) {
child.renameTo(new File(unzipDir + "/" + child.getName()));
}
}
rootDir.delete();
我必须写一些额外的代码来做。 Apache Common Compress库有什么办法做到这一点?