Compresser un dossier qui contient des sous-dossiers
public static void main(String argv[]) {
try {
String date = new java.text.SimpleDateFormat("MM-dd-yyyy")
.format(new java.util.Date());
File inFolder = new File("Output/" + date + "_4D");
File outFolder = new File("Output/" + date + "_4D" + ".zip");
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
new FileOutputStream(outFolder)));
BufferedInputStream in = null;
byte[] data = new byte[1000];
String files[] = inFolder.list();
for (int i = 0; i < files.length; i++) {
in = new BufferedInputStream(new FileInputStream(
inFolder.getPath() + "/" + files[i]), 1000);
out.putNextEntry(new ZipEntry(files[i]));
int count;
while ((count = in.read(data, 0, 1000)) != -1) {
out.write(data, 0, count);
}
out.closeEntry();
}
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Je suis en train de compresser un dossier qui contient des sous-dossiers. Essayer de compresser le dossier nommé 10-18-2010_4D.Le programme ci-dessus se termine avec l'exception suivante. Veuillez vous informer sur la façon de supprimer le problème.
java.io.FileNotFoundException: Output0-18-2010_4DD (Access is denied)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at ZipFile.main(ZipFile.java:17)
Le nom du dossier dans l'exception et celui que vous avez cité sont différents.
double possible de répertoires dans un fichier zip lors de l'utilisation de java.util.zip.ZipOutputStream
double possible de répertoires dans un fichier zip lors de l'utilisation de java.util.zip.ZipOutputStream
OriginalL'auteur LGAP | 2010-10-18
Vous devez vous connecter pour publier un commentaire.
Vous devez vérifier si le fichier est un répertoire, car vous ne pouvez pas passer des répertoires dans le zip de la méthode.
Prendre un coup d'oeil à cette page qui montre comment vous pouvez récursive zip un répertoire donné.
OriginalL'auteur dogbane
Voici le code pour la création de l'archive ZIP. Créé archive préserve la structure de répertoire d'origine (le cas échéant).
Ne pas oublier de fermer les flux de sortie après l'appel de cette méthode. Voici l'exemple:
OriginalL'auteur Bane
Je voudrais inclure la tâche ant pour la compression c'est plus facile de travailler avec.
La tâche de la classe peuvent être trouvés ici:
org.apache.tools.ant.taskdefs.Zip
(par programmation)c'est fait en 3 lignes de code, et ça fonctionne. Comparer ci-dessus.
J'ai pu trouver de nombreux fichiers jar dans la version récente de l'Ant. qui doit être utilisé pour la Compression de dossiers?
Sauf si vous voulez mettre en œuvre la compression zip dans votre propre application
voir ma mise à jour. @jassuncao - vous pouvez l'utiliser par programmation
OriginalL'auteur Bozho
OriginalL'auteur dan
Voici ce que j'ai écrit.
Cet exemple maintient la structure des fichiers et par qui, d'éviter l'entrée en double exception.
OriginalL'auteur Tzach Solomon
Java 7+ version, en utilisant un Chemin, FileVisitor et AutoCloseable interfaces. Pour utiliser cet exemple, il suffit d'appeler
zipWalking(sourceDir,targetZipFile);
OriginalL'auteur Charlweed
Voici un autre exemple qui m'est venu après struggeling avec fermeture éclair pour un certain temps. C'est comme pour les autres exemples, mais j'ai ajouté beaucoup de commentaires dans les domaines où j'ai pensé plus d'explication est nécessaire. Java SE9
OriginalL'auteur Pauliman