J'essaie d'ajouter un fichier à une archive existante à l'aide du code suivant. Lorsqu'il est exécuté, aucune erreur ou des exceptions n'est affichée, mais aucun fichier n'est ajouté à l'archive non plus. Des idées pourquoi?
7 Réponses :
Je pense que votre terminé code> doit être avant em> votre
Fermer code> appel. p>
de codeProject quelqu'un a utilisé ce code. Seule la différence est proche et terminée par la dernière et la partie d'écriture: btw: p> Ceci est incorrect, la taille est nouvelle. La longueur ailleurs la lecture ne va pas.
Vous avez un tableau et vous le faites par exemple 10-1 est de 9 octets de long, de 0 à 8. P> mais votre lecture de 0 à 9 ... P> P>
Salut Poweroy, j'ai utilisé ce code exactement et toujours pas d'erreurs, mais aussi pas de fichier :(
J'ai aussi essayé ce zipfile zipfile = nouveau zipfile (archivePath); zipfile.beginupdate (); Entrée zipentertry = nouvelle zipenterry (nom de fichier); zipfile.add (nom de fichier); ZIPFILE.COMMITUPDATE (); Mais alors les chemins sont tous faux. J'ai besoin de définir des chemins relatifs.
dans DotNetZip , ajout de fichiers à un zip existant est vraiment simple et fiable.
using (var zip = ZipFile.Read(nameOfExistingZip)) { zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression; zip.AddFiles(listOfFilesToAdd, "directory\\For\\The\\Added\\Files"); zip.Save(); }
Je commence à détester Sharpziplib, c'est un niveau trop bas et la lecture de la documentation est confuse.
/// <summary> /// æ·»å å缩æ件 p 为客æ·ç«¯ä¼ åæ¥çæ件/夹å表,ç¨åå·éå¼ï¼ä¸å æ¬ä¸»è·¯å¾ï¼ zipfileå缩å çå称 /// </summary> /// <param name="p"></param> /// <param name="zipfile"></param> public void AddZipFile(string p, string zipfile) { if (ServerDir.LastIndexOf(@"\") != ServerDir.Length - 1) { ServerDir += @"\"; } string[] tmp = p.Split(new char[] { ';' }); //å离æ件å表 if (zipfile != "") //å缩å å称ä¸ä¸ºç©º { string zipfilepath=ServerDir + zipfile; if (_ZipOutputStream == null) { _ZipOutputStream = new ZipOutputStream(File.Create(zipfilepath)); } for (int i = 0; i < tmp.Length; i++) { if (tmp[i] != "") //å离åºæ¥çæ件åä¸ä¸ºç©º { this.AddZipEntry(tmp[i], _ZipOutputStream, out _ZipOutputStream); //åå缩æ件æµå å ¥å 容 } } } } private static ZipOutputStream _ZipOutputStream; public void Close() { _ZipOutputStream.Finish(); _ZipOutputStream.Close(); }
J'ai trouvé une solution simple la maintenant à zipfile et zipientry uniquement
Il y a un dossier ZippedFolder Strong> dans le répertoire racine du site, à l'intérieur, nous avons une archive Il y a un dossier avec nom si nous avons des formats de fichier différents et que nous voulons que vos fichiers soient enregistrés dans des dossiers respectifs, vous pouvez spécifier le code comme suit. p> maintenant l'archive contient deux dossiers
images forts> -----> img1.jpg, img2, .jpg
et un autre dossier
La classe zipOutputStream code> ne met pas à jour les fichiers ZIP existants. Utilisez la classe
zipfile code>. P>