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 :

[C#] Comment écrire dans un fichier ?


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 61
    Points : 43
    Points
    43
    Par défaut [C#] Comment écrire dans un fichier ?
    Voilà, je souhaite écrire dans un fichier. Je débute et en fait le problème c'est que l'implémentation que j'ai choisi n'écrit rien du tout et je ne comprends pas pourquoi. Voilà mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    flux_ecriture=File.OpenWrite(((config_probe)ProbesAEnregistrer[i]).lire_fichier_enregistrement());
    					ecrivain=new StreamWriter(flux_ecriture);
    					ecrivain.Write(val);
    					flux_ecriture.Close();
    Je sais qu'il y a d'autres manières d'implémenter cela mais j'aimerais bien comprendre mon erreur pour continuer mon apprentissage.
    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629

  3. #3
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879

  4. #4
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 61
    Points : 43
    Points
    43
    Par défaut
    En fait, je viens de me rendre compte que j'avais un problème un peu plus ennuyeux : un problème de ressources partagées.

    Voilà, j'ai donc deux Threads: mon thread principal et un thread secondaire. Mon thread principal crée un fichier et mon thread secondaire doit écrire dedans. Bien entendu, je suspends mon thread secondaire pendant que le thread principal crée mon fichier.

    Mais lorsque j'écris dans mon fichier un message apparait indiquant que le fichier est déjà utilisé par un autre process.

    Je crée mon fichier avec un simple et ensuite je ne touche plus à mon fichier. Pourquoi mon thread secondaire ne pourrait pas alors accéder à ce thread?

  5. #5
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Il faut ouvrir ton fichier en accès partagé (FileShare.ReadWrite) avec File.Open

    Pense à bien refermer le fichier dans tes deux threads

  6. #6
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 61
    Points : 43
    Points
    43
    Par défaut
    J'ai testé plusieurs solutions avec la classe FileInfo et divers flux mais j'ai toujours la même erreur. Dans mon premier Thread, je crée simplement le fichier, je ne l'ouvre donc pas mais je ne sais pas comment se passe cette création et je pense que mon erreur ce cache derrière.

    Pense à bien refermer le fichier dans tes deux threads
    Est-ce nécessaire de fermer un fichier qui a été seulement créé? Si oui, comment? Car aucun flux n'est ouvert sur ce fichier, en tout cas lors de l'implémentation.

  7. #7
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Fais voir ton code

  8. #8
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 61
    Points : 43
    Points
    43
    Par défaut
    Je viens de trouver mon erreur. Je ne pensait pas que la création simple de mon fichier générait un flux. Je ne le fermais donc pas.

    Je crois que j'ai un peu tourné en rond pour pas grand chose.

    Merci pour ton aide abelman.

    J'ai juste une dernière question. Les méthodes statiques de la classe file, je ne comprends pas trop à quoi elles servent. En fait, par exemple, avec File.Create, dans toute mon code, il est ensuite impossible d'accéder au fichier, n'est-ce pas?

  9. #9
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par guillaume16
    J'ai juste une dernière question. Les méthodes statiques de la classe file, je ne comprends pas trop à quoi elles servent. En fait, par exemple, avec File.Create, dans toute mon code, il est ensuite impossible d'accéder au fichier, n'est-ce pas?
    Effectivement avec File.Create, tant que tu ne l'as pas refermer tu ne peux l'ouvrir un deuxième fois. Si tu veux le faire, utilise File.Open et utilise la bonne option FileShare

  10. #10
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 61
    Points : 43
    Points
    43
    Par défaut
    Merci. A bientôt.

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

Discussions similaires

  1. [C#2.0] Comment écrire dans un fichier sur un serveur ?
    Par meli0207 dans le forum Contribuez
    Réponses: 6
    Dernier message: 27/06/2006, 14h57
  2. Réponses: 32
    Dernier message: 17/05/2006, 16h03
  3. comment écrire dans un fichier avec Ant-apache
    Par sidi.elmoctar dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 25/04/2006, 17h44
  4. [Delphi] Comment écrire dans un fichier texte ?
    Par Mickey.jet dans le forum Débuter
    Réponses: 2
    Dernier message: 01/04/2006, 14h00
  5. [JAR] Comment écrire dans un fichier properties dans un jar
    Par Alec6 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 05/10/2004, 15h16

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