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

Windows Forms Discussion :

StreamWriter et écriture dans un fichier


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 74
    Par défaut StreamWriter et écriture dans un fichier
    Bonjour à tous!

    Je m'adresse à vous ayant un problème que je n'arrive pas à résoudre.
    Quelques explications s'imposent :

    Je désire modifier un fichier texte qui sert de ressource à une autre application.
    Pour ce, je copie le contenu du fichier dans un arrayList, le modifie et pour terminer je réécris entièrement le contenu du fichier.
    Lors d'une exécution en pas à pas je constate que le contenu du buffer est bien correcte mais une fois l'écriture réalisé, j'ouvre donc mon fichier texte et il est vide.
    En dessous le code de la fonction:

    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
     
    private void button1_Click(object sender, EventArgs e)
            {
     
                //Création d'une nouvelle ligne si mode création
                if (!ModeEdition)
                {
                    //Ecriture à la fin du fichier
     
                }
                //ou Modification d'une ligne existante si mode édition
                else
                {
                    //Ecriture sur la ligne concerne (ref au nom du forage)
                    //On copie le fichier en mémoire
                    StreamReader reader = new StreamReader(Filename);
                    string ligne;
                    string[] tabLigne;
                    List<string> ligne_str = new List<string>();
                    int position = 0;
                    string buff = "";
     
                    while ((ligne = reader.ReadLine()) != null)
                    {
                        tabLigne = ligne.Split(';');
                        for (int i = 0; i < tabLigne.Length; i++)
                        {
                            ligne_str.Add(tabLigne[i]);
                        }
                    }                    
                    reader.Close();
     
                    //On cherche la ligne qui doit être modifiée et on réécrit dans le buffer
                    position = ligne_str.IndexOf(textBox1.Text);
                    ligne_str[position + 1] = textBox2.Text;
                    ligne_str[position + 2] = textBox3.Text;
     
                    //On réécrit le dans le fichier
                    StreamWriter writer = new StreamWriter(Filename);
                    writer.Write(""); // On efface le contenu du fichier
     
                    for (int j = 0; j < ligne_str.Count; j++)
                    {
                        if (((j + 1) % 3) != 0)
                        {
                            buff += ligne_str[j]+";";
                        }
                        else
                        {
                            buff += ligne_str[j] + "\r\n";
                        }                    
                    }
                    writer.Write(buff);
                }
            }
    Quelque chose m'échappe, faut t-il fermer l'actuel streamWriter et en instancier un nouveau ?

  2. #2
    Membre émérite Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Par défaut
    Tu ne fermes pas ton fichier

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 74
    Par défaut
    héhé..... j'suis vraiment dsl de poster pour une telle connerie...
    Merci à toi !

  4. #4
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Pour éviter ça, on a mis en place une instruction qui permet une nouvelle utilisation du mot clé using qui permet de libérer automatiquement les ressources non managées. Il n'est plus nécessaire d'appeler un méthode Close ou Dispose. Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    using(StreamWriter fs = new StreamWriter(@"C:\nomfichier.ext"))
    {
       //bloc d'instructions
    }
    A la fin du bloc la méthode Close est appelée automatiquement sur l'objet fs libérant automatiquement les ressources.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 74
    Par défaut
    Très bien, et merci pour l'info ! C'est toujours bon à savoir.
    Re-merci à vous !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/08/2005, 11h57
  2. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15
  3. Problème d'écriture dans un fichier xml
    Par vanoou dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/07/2005, 02h28
  4. Passer à la ligne lors de l'écriture dans un fichier
    Par hams dans le forum Assembleur
    Réponses: 4
    Dernier message: 17/04/2005, 19h25
  5. [JUnit] Junit écriture dans un fichier
    Par mikael35 dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 10/08/2004, 13h11

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