C# ouverture fichier erreur
Fermé
Utilisateur anonyme
-
Modifié par NHenry le 4/11/2016 à 20:55
Utilisateur anonyme - 11 nov. 2016 à 13:53
Utilisateur anonyme - 11 nov. 2016 à 13:53
A voir également:
- C# ouverture fichier erreur
- Fichier rar - Guide
- Erreur 0x80070643 - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
3 réponses
NHenry
Messages postés
15112
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 avril 2024
330
4 nov. 2016 à 20:57
4 nov. 2016 à 20:57
Je m'arrête sur la logique de ton code :
Donc tu ouvres ton fichier en lecture et pendant qu'il est ouvert en lecture, tu cherches (par une autre méthode) à écrire dedans ?
using (StreamReader sr = new StreamReader(path)) { File.WriteAllText(path, line); }
Donc tu ouvres ton fichier en lecture et pendant qu'il est ouvert en lecture, tu cherches (par une autre méthode) à écrire dedans ?
Utilisateur anonyme
4 nov. 2016 à 21:34
4 nov. 2016 à 21:34
si je fais:
ca me met aussi une erreur, il est aussi utilisé par un autre processus
public static string DclMDoc(string path)
{
string line = "";
try
{
using (StreamReader sr = new StreamReader(path))
{
line = sr.ReadToEnd();
}
File.WriteAllText(path, line);
}
catch (Exception e)
{
return e.ToString();
}
line = DecalM(line);
return "reussi";
}
ca me met aussi une erreur, il est aussi utilisé par un autre processus
NHenry
Messages postés
15112
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 avril 2024
330
4 nov. 2016 à 23:28
4 nov. 2016 à 23:28
Si c'est pour tout lire, pourquoi ne pas faire :
line=System.File.ReadAllText(path);
?
Si c'est pour réécrire les mêmes données, l'opération est inutile, je pense.
line=System.File.ReadAllText(path);
?
Si c'est pour réécrire les mêmes données, l'opération est inutile, je pense.
Whismeril
Messages postés
19025
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 avril 2024
929
Modifié par Whismeril le 5/11/2016 à 13:39
Modifié par Whismeril le 5/11/2016 à 13:39
Salut NHenri
comme toi je ne comprends pas l'intérêt de lire un fichier et en même temps d'y écrire son propre contenu.
Cependant vu le début de son message d'erreur
@ Guillaume, tu n'as pas compris ce que NHenry essayait de te dire alors on va le décomposer dans le code (voir les commentaires)
Donc, non seulement ça ne sert à rien ce que tu faits, mais c'est ton code qui se bloque lui-même.
Il faut fermer le streamReader, et laisser un peu de temps au système pour "physiquement" libérer le fichier.
comme toi je ne comprends pas l'intérêt de lire un fichier et en même temps d'y écrire son propre contenu.
Cependant vu le début de son message d'erreur
..C:\Users\Guillaume\Pictures\doritos.jpg..son fichier est un jpg, donc File.ReadAllText ne va pas fonctionner, pas plus que File.WriteAllText
@ Guillaume, tu n'as pas compris ce que NHenry essayait de te dire alors on va le décomposer dans le code (voir les commentaires)
using (StreamReader sr = new StreamReader(path))//ici tu crées un stream qui a un accès sur le fichier en lecture seule { line = sr.ReadToEnd();//là tu lis le fichier jusqu'à la fin, au passage comme tu ne lit pas une ligne le nom de la variable est inopportun, voire trompeur quand tu demandes de l'aide.... } File.WriteAllText(path, line);//là tu veux écraser le fichier en y mettant son propre contenu, ors tu as déjà 3 lignes plus tôt bloqué ce fichier en lecture seule
Donc, non seulement ça ne sert à rien ce que tu faits, mais c'est ton code qui se bloque lui-même.
Il faut fermer le streamReader, et laisser un peu de temps au système pour "physiquement" libérer le fichier.
NHenry
Messages postés
15112
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 avril 2024
330
5 nov. 2016 à 13:50
5 nov. 2016 à 13:50
Sauf erreur de ma part, le "using" s'en charge déjà (quand tu sors du bloc (y compris sur une exception), ça fait un Dispose du Stream, donc je pense que ça ferme le fichier aussi).
Il est aussi possible qu'un léger buffer soit présent et que le fichier soit fermé quelques ms trop tard pour que l'écriture puisse l'ouvrir.
Pour lire un fichier au format binaire, il est préférable d'utiliser ReadAllBytes et WriteAllBytes pour l'écrire.
Il est aussi possible qu'un léger buffer soit présent et que le fichier soit fermé quelques ms trop tard pour que l'écriture puisse l'ouvrir.
Pour lire un fichier au format binaire, il est préférable d'utiliser ReadAllBytes et WriteAllBytes pour l'écrire.
Whismeril
Messages postés
19025
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 avril 2024
929
5 nov. 2016 à 14:33
5 nov. 2016 à 14:33
Sauf erreur de ma part, le "using" s'en charge déjà (quand tu sors du bloc (y compris sur une exception), ça fait un Dispose du Stream, donc je pense que ça ferme le fichier aussi).
Il est aussi possible qu'un léger buffer soit présent et que le fichier soit fermé quelques ms trop tard pour que l'écriture puisse l'ouvrir.
Oui et oui, le using fait bien un dispose, mais tant que le garage collector n'est pas passé il reste des "trucs" quelque part.
Faire un Close dans la clause using résout parfois le problème
Utilisateur anonyme
Modifié par Guillaume2020 le 11/11/2016 à 13:54
Modifié par Guillaume2020 le 11/11/2016 à 13:54
alors : dsl de mon absence;
réécrire les mêmes données, là n'est pas le problème, (je changerai ca quand j'aurai réussi à le faire)
j'essayais de faire readtoend sur un jpg car c'est ce que je faisais en VB (avec une autre méthode), et ça fonctionnait, c'est bien ce que ça fait quand on ouvre une image avec le bloc notes.
sinon cherchez pas j'ai fait plein d'erreurs, merci pour l'aide, je crois que j'ai ce qu'il me faut
réécrire les mêmes données, là n'est pas le problème, (je changerai ca quand j'aurai réussi à le faire)
j'essayais de faire readtoend sur un jpg car c'est ce que je faisais en VB (avec une autre méthode), et ça fonctionnait, c'est bien ce que ça fait quand on ouvre une image avec le bloc notes.
sinon cherchez pas j'ai fait plein d'erreurs, merci pour l'aide, je crois que j'ai ce qu'il me faut
4 nov. 2016 à 21:31