c# sharpziplib l'ajout de fichiers à l'archive existante
suis en train d'ajouter un fichier à une archive existante, en utilisant le code suivant. Lorsque vous exécutez pas d'erreurs ou d'exceptions, mais pas les fichiers sont ajoutés à l'archive. Des idées pourquoi?
using (FileStream fileStream = File.Open(archivePath, FileMode.Open, FileAccess.ReadWrite))
using (ZipOutputStream zipToWrite = new ZipOutputStream(fileStream))
{
zipToWrite.SetLevel(9);
using (FileStream newFileStream = File.OpenRead(sourceFiles[0]))
{
byte[] byteBuffer = new byte[newFileStream.Length - 1];
newFileStream.Read(byteBuffer, 0, byteBuffer.Length);
ZipEntry entry = new ZipEntry(sourceFiles[0]);
zipToWrite.PutNextEntry(entry);
zipToWrite.Write(byteBuffer, 0, byteBuffer.Length);
zipToWrite.CloseEntry();
zipToWrite.Close();
zipToWrite.Finish();
}
}
J'ai mis à jour ma réponse.
OriginalL'auteur Grant | 2009-08-31
Vous devez vous connecter pour publier un commentaire.
Dans DotNetZip, l'ajout de fichiers à un zip est très simple et fiable.
Si vous souhaitez spécifier un chemin d'accès au répertoire pour que le nouveau fichier, puis utiliser un autre surcharge pour AddFile().
Si vous souhaitez ajouter un ensemble de fichiers, utilisez AddFiles().
Vous n'avez pas à vous soucier de Fermer(), CloseEntry(), CommitUpdate(), Finition (), ou toutes autres crasse.
OriginalL'auteur Cheeso
De Codeproject quelqu'un a utilisé ce code. La seule différence est la proximité et la finition dans le cas contraire autour et à l'écriture de la partie:
BTW:
C'est incorrect, la taille est newFileStream.longueur ailleurs le Lire va mal.
Vous avez un tableau et vous rendre par exemple 10-1 est de 9 octets de long, de 0 à 8.
Mais votre lecture de 0 à 9...
j'ai aussi essayé cette ZipFile zipFile = new ZipFile(archivePath); zipFile.BeginUpdate(); ZipEntry entrée = new ZipEntry(fileName); zipFile.Ajouter(fileName); zipFile.CommitUpdate(); mais les chemins sont tous faux. J'ai besoin de configurer les chemins d'accès relatifs.
OriginalL'auteur RvdK
Je pense que votre
Finish
appel doit être avant votreClose
appel.Mise à jour: Cela ressemble à un bug connu. Il est possible qu'il ait déjà été fixe, vous aurez besoin de vérifier votre SharpZipLib version pour voir si elle tient compte de tout corriger. Si non, vous pouvez contourner le problème en copiant tous les fichiers d'une archive, d'ajouter le nouveau fichier, puis en se déplaçant à la nouvelle archive de l'ancien nom de l'archive.
OriginalL'auteur Vinay Sajip
OriginalL'auteur JingvenChina
il y a un dossier ZippedFolder dans le site du répertoire racine , à l'intérieur, nous avons une archive MyZipFiles.
Il y a un dossier avec le nom siteImages qui se compose de tous les fichiers d'image.
Le code suivant est de compresser les images
si nous disposons de différents formats de fichiers et nous voulons que vos fichiers soient enregistrés dans les dossiers respectifs,vous pouvez spécifier le code comme suit.
maintenant l'archive contient deux dossiers
images ---- > img1.jpg , img2,.jpg
et un autre dossier
fichiers --> le client.pdf, sample.doc
OriginalL'auteur Mourya
La
ZipOutputStream
classe ne comprend pas mettre à jour les fichiers ZIP. Utiliser leZipFile
classe à la place.OriginalL'auteur Doug Domeny
J'ai trouvé une solution simple pour la garder pour ZipFile et ZipEntry seulement
OriginalL'auteur Fahar