Bonjour,
Dans mon application je telecharge un fichier zip que je decompresse dans un repertoire temporaire. Je verifie qu'il ya un fichier excel dedans puis je dois supprimer ce repertoire temporaire. (bon le prog fera plus de truc par la suite mais pour l'instant je me contente de ca)
Le probleme c'est que des que j'ai une image dans le zip je ne peux plus faire de delete.
J'ai essaye:
Et j'obtiens l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Directory.Delete(nomdurep,true);
Du coup, j'ai essaye de supprimer tous les fichiers contenu dans le rep avant de le supprimer:Le processus ne peut pas accéder au fichier 'CA13249.jpg', car il est en cours d'utilisation par un autre processus.
Et j'obtiens l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 files = Directory.GetFileSystemEntries(monrep); int filecount2 = files.GetUpperBound(0) + 1; for (int i = 0; i < filecount2; i++) { File.Delete(files[i]); }
Et ca a chaque fois pour la derniere image.Le processus ne peut pas accéder au fichier 'CA13249.jpg', car il est en cours d'utilisation par un autre processus.
Du coup je vois pas comment resoudre mon bug. :s
Peut etre que ca vient du code de decompression que j'ai honteusement pompe???
dans ce code l'auteur ferme bien ses streams et pour etre sur j'ai remis ces varialbes a null. Donc bref je vois pas comment resoudre mon probleme... SI quelqu'un a une idee?
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 public static void Decompresser(string cheminFichier) { string zip_file = cheminFichier; string rep = Path.GetDirectoryName(cheminFichier) + "\\" + Path.GetFileNameWithoutExtension(cheminFichier); ZipInputStream zip = null; ZipEntry zip_entry; FileStream stream = null; int nb; int nbm=0; try { nbm = 0; //un stream zip pour l'entrée zip zip = new ZipInputStream(new FileStream(zip_file, FileMode.Open, FileAccess.Read)); //on crée le répertoire pour les fichier décompresser Directory.CreateDirectory(rep); //tant que il y a une entrée on continue,sinon on arrête while ((zip_entry = zip.GetNextEntry()) != null) { try { //si entrée zip_entry est un répértoire on crée le repertoire if (zip_entry.IsDirectory) { Directory.CreateDirectory(rep + "\\" + zip_entry.Name); } //sinon : else { //on crée un stream pour l'écriture stream = new FileStream(rep + "\\" + zip_entry.Name, FileMode.Create, FileAccess.Write); //le conteur int count; byte[] mem = new byte[10000]; //l'écriture while ((count = zip.Read(mem, 0, 10000)) > 0) { stream.Write(mem, 0, count); } } nbm++; } catch (Exception q) { continue; } } } catch (Exception e) { } finally { if (stream != null) stream.Close(); if (zip != null) zip.Close(); } if (stream != null) stream.Close(); if (zip != null) zip.Close(); zip_entry = null; zip_file = null; }
merci
Partager