Исключить корневой каталог при извлечении с использованием Apache Common Compress - PullRequest
0 голосов
/ 13 февраля 2019

Я использую библиотеку Apache Common Compress для распаковки файла tar.gz.У меня есть сценарий, в котором файловая иерархия в tar-файлах такова.

  • A [Root Directory]
    • B [File]
    • C [File]

Теперь эти файлы будут извлечены по четко определенному пути со следующим кодом:

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?

...