Compresser le répertoire en tar.gz avec Commons Compress

Je suis en cours d'exécution dans un problème en utilisant les communes de compresser de la bibliothèque pour créer un tar.gz d'un répertoire. J'ai une structure de répertoire qui est comme suit.

parent/
    child/
        file1.raw
        fileN.raw

J'utilise le code suivant pour effectuer la compression. Il fonctionne très bien sans exceptions. Cependant, lorsque j'essaie de décompresser que tar.gz je ne obtenir un seul fichier avec le nom "childDirToCompress". Son la taille correcte de sorte que les fichiers ont clairement été ajoutés les uns aux autres dans le goudronnage des processus. La sortie désirée serait un répertoire. Je ne peux pas comprendre ce que je fais mal. Peut-sage communes compresser m'ont mis sur la bonne voie?

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());

                }
            }
        }

source d'informationauteur awfulHack