IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

StreamReader: Le processus ne peut pas accéder au fichier. Une solution?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Par défaut StreamReader: Le processus ne peut pas accéder au fichier. Une solution?
    Bonjour,

    j'aimerai afficher le contenu d'un fichier dans un textbox de mon interface, alors que ce fichier est accédé par un autre processus (qui écrit dedans).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    lecteur = new StreamReader(fichier);
     
    // Envoit le contenu total dans txtPosition
    txtPosition.Text = lecteur.ReadToEnd().Replace("\n","\r\n");
    Ce code génère alors une erreur "Le processus ne peut accéder au fichier[...]"

    Y-a-t-il une façon de contourner cela et de lire malgré tout le contenu ? Je peux très bien ouvrir le fichier dans le Notepad (mais pas le modifier, evidemment), il doit donc bien exister un moyen simple (puisque le Notepad ne fait rien de compliqué)!

    Bonne journée

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Salut,

    essaie de voir avec une des surcharges de FileStream pour passer un Share en lecture.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Par défaut
    essaie de voir avec une des surcharges de FileStream pour passer un Share en lecture.
    Je ne comprend pas ce que tu veux dire. D'après ce que je comprend de la doc, le share devrait se passer lors de l'écriture du fichier qu'on souhaite ouvrir par la suite.

    Je ne peux pas changer la façon dont le fichier est ouvert par l'autre processus...

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    J'entends bien, mais vu qu'on a pas ton instanciation de ta variable fichier, je supposais que tu l'avais ouvert avec un File.Open(), qui par defaut demande un FileShare.None. Essaie de placer dans ton ctor FileStream (ou File.Open), le Share à Read.

    Maintenant si le process en question a demandé un accès exclusif en lecture ecriture, je ne pense pas qu'on puisse lire facilement le dit fichier.

  5. #5
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    tu peut essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    using(FileStream fs = new FileStream(fichier, FileMode.Open, FileAccess.Read)
    {
      StreamReader rd = new StreamReader(fs);
     
      etc...
    }
    Si notepad peut le lire, alors ça devrait marcher (sinon la dernière solution est de copier le fichier vers un autre chemin avec File.Copy, et si cette dernière échoue je ne connais pas d'autres méthodes "simples").

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Par défaut
    tu peut essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    using(FileStream fs = new FileStream(fichier, FileMode.Open, FileAccess.Read)
    {
      StreamReader rd = new StreamReader(fs);
     
      etc...
    }
    Ca ne marche pas non plus (même erreur). En revanche, copier le fichier et lire la copie fonctionne.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/10/2011, 03h56
  2. Réponses: 18
    Dernier message: 28/10/2009, 23h17
  3. Réponses: 22
    Dernier message: 02/10/2009, 10h31
  4. Réponses: 7
    Dernier message: 22/08/2008, 16h20
  5. Erreur : Le processus ne peut pas accéder au fichier
    Par victor72 dans le forum Dev-C++
    Réponses: 1
    Dernier message: 16/03/2007, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo