Bonjour à tous,
Réalisant une application d'utilitaire pour la gestion des Ebooks au format cbz (simple zip avec changement d'extension)
Souhaitant avoir la possibilité de fusionner plusieurs fichiers zip j'utilise le code ci-après. Celui-ci pose problème à la décompression. En effet, j'obtiens l'erreur suivante lors de la décompression : "Fin de données inattendue". Du coup les logiciel de lecture des Ebooks ne savent pas lire le fichier
Ou se situe l'erreur dans le code. Merci pour votre aide
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 public ZipArchive Merge (List<ZipArchive> archives, string dir) //FIXME: probleme de fin de donnée au dézippage à regler { if (archives == null) return null; if (archives.Count == 1) return archives.Single(); int i = 0; ZipArchiveEntry nzae; using (MemoryStream memoryStream = new MemoryStream()) { using (var newarchive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) { foreach( ZipArchive zp in archives) { foreach ( ZipArchiveEntry zae in zp.Entries) { //if (zae.FullName.EndsWith("/") == true ) continue; //CHECK: on passe les entrée des dossiers i++; nzae = newarchive.CreateEntry(zae.FullName); //FIXME : prévoir numérotation des fichier - quid si dossier using (var a = zae.Open()) using (var b = nzae.Open()) a.CopyTo(b); } } string nf = dir + "\\fusion.cbz"; using (var fileStream = new FileStream(nf, FileMode.Create)) { memoryStream.Seek(0, SeekOrigin.Begin); memoryStream.CopyTo(fileStream); } return newarchive; } }
Partager