Bonjour à tous,
j'ai un problème de IOException
J´ai écrit un programme afin d´extraire des fichiers (des dossiers d´extension zip que je crée) vers un autre dossier.
Quand je compile mon code ce dernier fonctionne bien à condition de neprocéder qu´a une extraction. Au-dela, survient l´erreur
"Le processus ne peut pas accéder au fichier car il est utilisé par un autre processus ".
En mode step by step, il arrive à extraire deux fois et même plus.
J´aimerai pouvoir créer autant de dossier que je veux et qu´il les extrait sans erreurs.
J´ai essayé le try-catch, try-catch-finally, le using.
Etant donné que using implemente IDisposable, Dispoose() n´est pas applicable dans mon code car n´apporte rien. J´ai pensé à Close(), mais il n´est pas également applicable ici.
mon code pour plus d´appréciation de mon problème.
Merci d´avance pour vos suggestions
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 using (ZipArchive archive = ZipFile.OpenRead(e.FullPath)) { foreach (ZipArchiveEntry entry in archive.Entries) { // Outputs relevant file information to the console Console.WriteLine("File Name: {0}", entry.Name); Console.WriteLine("File Size: {0} bytes", entry.Length); Console.WriteLine("Compression Ratio: {0}", ((double)entry.CompressedLength / entry.Length).ToString("0.0%")); //Identifies the destination file name and path string ordnername = Path.GetFileNameWithoutExtension(e.FullPath); //extract the files to the output folder in a safer manner string ordnerPfad; if (!File.Exists(ordnername)) { //Calculates what the new full path for the unzipped file should be ordnerPfad = Path.Combine(ConfigurationManager.AppSettings["ExtraktionPath"], ordnername); //Creates the directory (if it doesn't exist) for the new path Directory.CreateDirectory(ordnerPfad); if (entry.FullName.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase) | entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase) | entry.FullName.EndsWith(".xml", StringComparison.OrdinalIgnoreCase)) //Extracts the file to (potentially new) path entry.ExtractToFile(Path.Combine(ordnerPfad, entry.FullName)); } }
Partager