7 votes

Comment détariser un fichier TAR en utilisant Apache Commons

J'utilise la bibliothèque Apache Commons 1.4.1 pour compresser et décompresser. ".tar.gz" des fichiers.

J'ai des problèmes avec la dernière partie - convertir une TarArchiveInputStream en un FileOutputStream .

Bizarrement, il se brise sur cette ligne :

FileOutputStream fout = new FileOutputStream(destPath);

destPath est un fichier dont le chemin canonique est : C:\Documents et paramètres \Administrator\My Documents \JavaWorkspace\BackupUtility\untarred\Test\subdir\testinsub.txt

Erreur produite :

Exception in thread "main" java.io.IOException: The system cannot find the path specified

Une idée de ce que ça pourrait être ? Et pourquoi ne parvient-il pas à trouver le chemin ?

Je joins l'ensemble de la méthode ci-dessous (dont la majeure partie est tirée de aquí ).

private void untar(File dest) throws IOException {
    dest.mkdir();
    TarArchiveEntry tarEntry = tarIn.getNextTarEntry();
    // tarIn is a TarArchiveInputStream
    while (tarEntry != null) {// create a file with the same name as the tarEntry
        File destPath = new File(dest.toString() + System.getProperty("file.separator") + tarEntry.getName());
        System.out.println("working: " + destPath.getCanonicalPath());
        if (tarEntry.isDirectory()) {
            destPath.mkdirs();
        } else {
            destPath.createNewFile();
            FileOutputStream fout = new FileOutputStream(destPath);
            tarIn.read(new byte[(int) tarEntry.getSize()]);
            fout.close();
        }
        tarEntry = tarIn.getNextTarEntry();
    }
    tarIn.close();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X