Сжать каталог до tar.gz с помощью Commons Compress

Я столкнулся с проблемой с использованием библиотеки сжатия commons для создания tar.gz каталога. У меня есть структура каталогов, которая выглядит следующим образом.

parent/
    child/
        file1.raw
        fileN.raw

Я использую следующий код для сжатия. Работает нормально без исключений. Однако, когда я пытаюсь распаковать этот tar.gz, я получаю один файл с именем childDirToCompress. Это правильный размер, чтобы файлы были четко добавлены друг к другу в процессе tarring. Желаемый вывод будет каталогом. Я не могу понять, что я делаю неправильно. Может ли какой-нибудь мудрый компрессор общего достать меня на верном пути?

CreateTarGZ() throws CompressorException, FileNotFoundException, ArchiveException, IOException {
            File f = new File("parent");
            File f2 = new File("parent/childDirToCompress");

            File outFile = new File(f2.getAbsolutePath() + ".tar.gz");
            if(!outFile.exists()){
                outFile.createNewFile();
            }
            FileOutputStream fos = new FileOutputStream(outFile);

            TarArchiveOutputStream taos = new TarArchiveOutputStream(new GZIPOutputStream(new BufferedOutputStream(fos)));
            taos.setBigNumberMode(TarArchiveOutputStream.BIGNUMBER_STAR); 
            taos.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
            addFilesToCompression(taos, f2, ".");
            taos.close();

        }

        private static void addFilesToCompression(TarArchiveOutputStream taos, File file, String dir) throws IOException{
            taos.putArchiveEntry(new TarArchiveEntry(file, dir));

            if (file.isFile()) {
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
                IOUtils.copy(bis, taos);
                taos.closeArchiveEntry();
                bis.close();
            }

            else if(file.isDirectory()) {
                taos.closeArchiveEntry();
                for (File childFile : file.listFiles()) {
                    addFilesToCompression(taos, childFile, file.getName());

                }
            }
        }

Ответы на вопрос(5)

Ваш ответ на вопрос