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 :

Création d'un fichier et lecture


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Par défaut Création d'un fichier et lecture
    Bonjours,

    je vous expose mon problème :

    je créé un fichier. Ensuite je lit ce fichier qu'il soit vide ou non afin d'initialiser une variable soit a null si le fichier est vide soit avec le contenu de l'enregistrement. Seulement lorsque je lance mon application, le fichier se créé, ensuite je fait une lecture de celui-ci. Le problème vient lorsque je tente de lire le fichier :
    Le processus ne peut pas accéder au fichier 'c:\fichierRepertoireTravail.txt', car il est en cours d'utilisation par un autre processus.
    si je coupe mon application et que je la relance le fichier (qui à été créer lors de la précédente execution) et il arrive à lire ce fichier qu'il soit vide ou non.

    Voici le morceau de code dont je vous parle :

    création du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //déclaration du fichier contenant le chemin du repertoire de travail.
                FileInfo fichierRepertoireTravail = new FileInfo(@"c:\fichierRepertoireTravail.txt");
                //si ce fichier n'existe pas 
                if (!fichierRepertoireTravail.Exists)
                {
                    //on le créé
                    fichierRepertoireTravail.Create();
                }
    juste à la suite de ci-dessus,
    lecture du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //lecture dans le fichier le chemin d'accés au repertoire de travail.
                using (StreamReader lecture = new StreamReader(fichierRepertoireTravail.FullName))
                {
                    cheminRepertoire = lecture.ReadLine();
                }
    Dans l'attente de vous lire,, j'espère que vous pourrez m'aider à avancer.

  2. #2
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Bonjour,

    La fonction create de fileinfo te renvoie un filestream. Comme tu ne fermes pas le filestream en question, il reste ouvert t'empêchant donc d'y avoir accès en lecture.
    je te conseille ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //déclaration du fichier contenant le chemin du repertoire de travail.
    FileInfo fichierRepertoireTravail = new FileInfo(@"c:\fichierRepertoireTravail.txt");
    //si ce fichier n'existe pas 
    if (!fichierRepertoireTravail.Exists)
    {
      //on le créé
      using(FileStream fs = fichierRepertoireTravail.Create())
      {
        //le code pour remplir le fichier...
      }
    }
    Bon dév.

  3. #3
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    Il faut toujours ferme les streams a la fin de traitement ;que soit en lecture ou en écriture


  4. #4
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Bonjour,

    azstar : Le using suffit. Le using effectue un appel à dispose et le dispose appelle close (Utilises Reflector pour voir le code de la classe Stream ). Donc ce n'est pas nécessaire du tout si tu fais un using comme dharkan l'a très bien fait pour son streamreader et comme je l'ai aussi fait dans ma proposition de code.

    Il faut juste faire attention avant de quitter le using à faire un flush dans le filestream, sinon les données ne seront pas écrites dans le fichier.

    Bon dév.

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonjour,

    Citation Envoyé par sisqo60 Voir le message
    Il faut juste faire attention avant de quitter le using à faire un flush dans le filestream, sinon les données ne seront pas écrites dans le fichier.
    Non, le Close entraine le Flush. Le Flush sert juste à garantir l'écriture physique à un point donné pour se prémunir d'une perte liée à un arrêt brutal de l'application - ou pour garantir l'écriture physique à un point donné si le fichier est partagé avec un autre process en lecture (qui pourra lire ce qui est "flushé" dans ce cas).

  6. #6
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    OK pour le filestream

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2010, 23h12
  2. Création d'un loader MD3 - Lecture de fichier binaire
    Par JeeWee dans le forum Moteurs 3D
    Réponses: 4
    Dernier message: 14/08/2009, 19h55
  3. [création d'un fichier]
    Par gemai dans le forum C
    Réponses: 15
    Dernier message: 29/08/2003, 14h58
  4. FOXPRO 2.6 : erreur créations du /des fichiers CAB
    Par breihtiti dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 16/11/2002, 11h28
  5. [Kylix] Création d'un fichier lien
    Par DrQ dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2002, 21h30

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