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