Je télécharge un fichier Zip à partir du Web. Il contient des dossiers et des fichiers. Les décompresser en utilisant ZipInputstream
et ZipEntry
. Zipentry.getName
Donne le nom du fichier sous la forme htm/css/aaa.htm
.
Je crée donc une nouvelle File(zipentry.getName);
Mais problème il lance une exception: File not found
. J'ai compris qu'il crée des sous-dossiers htm
et css
.
Ma question est: comment créer un fichier incluant ses sous-répertoires, en passant au dessus du chemin?
Utilisez ceci:
File targetFile = new File("foo/bar/phleem.css");
File parent = targetFile.getParentFile();
if (!parent.exists() && !parent.mkdirs()) {
throw new IllegalStateException("Couldn't create dir: " + parent);
}
Bien que vous puissiez simplement faire file.getParentFile().mkdirs()
sans vérifier le résultat, il est considéré comme une meilleure pratique de vérifier la valeur de retour de l'opération. D'où la vérification d'un répertoire existant d'abord, puis la vérification de la création réussie (s'il n'existait pas encore).
Référence:
Vous devez créer des sous-répertoires si nécessaire, pendant que vous parcourez les entrées du fichier Zip.
ZipFile zipFile = new ZipFile(myZipFile);
Enumeration e = zipFile.entries();
while(e.hasMoreElements()){
ZipEntry entry = (ZipEntry)e.nextElement();
File destinationFilePath = new File(entry.getName());
destinationFilePath.getParentFile().mkdirs();
if(!entry.isDirectory()){
//code to uncompress the file
}
}
C'est comme ça que je le fais
static void ensureFoldersExist(File folder) {
if (!folder.exists()) {
if (!folder.mkdirs()) {
ensureFoldersExist(folder.getParentFile());
}
}
}
.mkdirs()
sur un objet File
: http://www.roseindia.net/Java/beginners/Java-create-directory.shtmlisDirectoryCreated = (nouveau fichier ("../ path_for_Directory/Directory_Name")). mkdirs (); if (! isDirectoryCreated) { // Répertoire la création a échoué }