Bonjour,
J'ai besoin de zipper un dossier pour ensuite l'envoyer par mail dans une appli winform c#. J'utilisais jusqu'a present la fonction suivante qui me semblait plutot safe et qui fonctionnait correctement:
Sauf que voila, incomprehension ce qui fonctionnait encore tres bien il y a deux semaines ne fonctionne plus. Je ne recupere pas l'exception dans mon fichier "ErrorZip.txt". J'ai utilise le debugger pour essayer de comprendre, en parcourant ligne par ligne l'execution se passe bien pour la premiere iteration de la boucle; par contre lors de la deuxieme iteration, une fois arrive a la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 private void ZipSafe(string p_FolderName, string p_ArchiveName) { try { if (File.Exists(p_ArchiveName)) File.Delete(p_ArchiveName); string[] l_DataSet = Directory.GetFiles(p_FolderName, "*.txt"); using (ZipArchive l_Zip = ZipFile.Open(p_ArchiveName, ZipArchiveMode.Create)) { foreach (string l_File in l_DataSet) { using (FileStream l_Stream = new FileStream(l_File, FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite)) { ZipArchiveEntry l_ZipArchiveEntry = l_Zip.CreateEntry(Path.GetFileName(l_File), CompressionLevel.Optimal); using (Stream l_Destination = l_ZipArchiveEntry.Open()) { if (l_Stream.CanRead == true || l_Destination.CanWrite == true) { l_Stream.CopyTo(l_Destination); } } l_Stream.Close(); } } l_Zip.Dispose(); } } catch (System.Exception e) { using (StreamWriter sw = new StreamWriter(@"C:\Users\**\Documents\ErrorZip.txt")) { string l = e.ToString(); sw.WriteLine(l); sw.Close(); } } }
VS plante, et je suis oblige d'arreter le deboggage. Je ne sais pas si le probleme vient de la variable "l_Stream" ou de la variable "l_Destination". J'ai fais divers test (null, autorisation lecture/ecriture) et tout semble OK de ce cote la.
Code : Sélectionner tout - Visualiser dans une fenêtre à part l_Stream.CopyTo(l_Destination);
Si quelqu'un avait un element de reponse, car je ne comprend meme pas ce qu'il se passe quand ca plante. Merci d'avance pour votre aide, je souhaite a tout le monde une bonne journee.
Vincent
PS: liens doc
ZipArchiveEntry.Open() : https://msdn.microsoft.com/en-us/lib...vs.110%29.aspx
FileStream(string, FileMode, FileAcess, FileShare) : https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx
Stream.CopyTo(string) : https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx
Partager