Lecture de ligne dans un fichier texte

Résolu
yabiyou Messages postés 43 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 6 septembre 2007 - 20 août 2007 à 14:31
tomlev Messages postés 25 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 28 août 2007 - 21 août 2007 à 14:55
Bonjour,

je suis grand débutant en C # et je n'arrrive pas à lire un fichier texte.
Je voudrais stocker chaque ligne dans l'élément n°i d'un tableau pour le fichier que j'ai préalablement sélectionner, openfiledialog1.filenames(2) par exemple

 

using

System;
using

System.Collections.Generic;
using

System.ComponentModel;
using

System.Data;
using

System.Drawing;
using

System.Text;
using

System.Windows.Forms;
using

System.IO; 

namespace

test{

public
partial
class
Form1 :
Form{

   public Form1()   {

      InitializeComponent();

   }

 

   private
void button1_Click(
object sender,
EventArgs e)   {
      openFileDialog1.DefaultExt "txt";      openFileDialog1.Filter

"TXT files (*.txt)|*.txt|All files (*.*)|*.*";      openFileDialog1.Title =

"Select input txt file";
      openFileDialog1.Multiselect true;      openFileDialog1.FileName Input.Text;

      if (openFileDialog1.ShowDialog() ==
DialogResult.OK)         {

         Input.Text =
Path.Combine(
Path.GetDirectoryName(Input.Text),
Path.GetFileNameWithoutExtension(Input.Text) +
".out" +
Path.GetExtension(Input.Text));}

 

}

 }

}

}

7 réponses

tomlev Messages postés 25 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 28 août 2007
20 août 2007 à 16:37
OK...

D'abord, vu que les valeurs A, B et C sont associées, je pense qu'il vaudrait mieux créer une structure pour les regrouper sous forme de triplets, par exemple :

    struct Triplet
    {
        public double A;
        public double B;
        public double C;
    }

Ensuite tu manipuleras un tableau de triplets plutot que 3 tableaux. Vu que tu ne connais pas à l'avance le nombre de ligne, il vaut mieux utiliser une liste dynamique de triplets :
List<Triplet> liste = new List<Triplet>();

Pour l'algorithme global, tu peux faire un truc comme ca :

Initialiser la liste;
Pour chaque fichier sélectionné
{
    Pour chaque ligne dans le fichier
    {
       Lire les valeurs (en utilisant String.Split);
       Créer un nouveau triplet t avec ces valeurs;
       Ajouter t à la liste ( liste.Add(t) );
    }
}
3
tomlev Messages postés 25 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 28 août 2007
20 août 2007 à 14:55
Je ne suis pas sûr de bien comprendre ton problème... tu cherches à obtenir la liste des fichiers sélectionnés, ou à lire le contenu de ces fichiers ?

Tu peux obtenir les chemins d'accès des fichiers en faisant un foreach sur la collection Filenames du dialogue :
    foreach (string filename in openFileDialog1.Filenames)
    {
       // faire qqch avec filename
    }

Pour lire le contenu d'un fichier donné, tu peux faire comme ça :
    StreamReader rd = new StreamReader(filename);
    string line;
    while ((line = rd.ReadLine()) != null)
    {
       // faire qqch avec line
    }
    rd.Close();
0
yabiyou Messages postés 43 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 6 septembre 2007
20 août 2007 à 15:23
Je n'ai peut être pas été assez clair.
En fait j'ai plusieurs fichiers textes organisés par lignes de la forme

A=4.566 B=6.333 C=7.555
A=8.555 B=6.331 C=9.336
A=7.556 B=9.565 C=8.246
etc

Je veux pouvoir lire des fichiers et en extraire 3 tableaux A, B et C contenant les valeurs numériques associées.
De plus je veux aussi faire une multiselection qui me classe par ordre alphabétique les fichiers qui sont numérotés TM1, TM2, TM3 etc et effecture l'opération précédente pour obtenir des "grands" tableaux contenant les valeurs de A, B et C de l'ensemble des fichiers sélectionné

voili voilou
0
bernie666 Messages postés 427 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 29 janvier 2008 1
20 août 2007 à 16:32
Salut,

   //declaration du fichier a parcourir
   StreamReader unFic = new StreamReader(unChemin);
   //declaration d'une variable intermediare qui va recuperer chaque streemReader.readline()
   String ligne;
   //on parcour le fichier tant qu'on a des enregistrement
   while((ligne = unFic.ReadLine()) != null)
   {
    //et on affecte chaque ligne du fichier a la collection
    //ici tu va récuperer la ligne de ton fichier vu que le caractere séparateur est un espace tu fais un split sur la ligne         pour voir   un    tableau de 3 caracteres => tu parcour ce tableau et tu le dispatch entre les 3 autres tableaux qui contiennent les valeures A , B , C
   } 
   unFic.Close();

-------------------------------------------http://quoideneufaujourdhui.spaces.live.com
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yabiyou Messages postés 43 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 6 septembre 2007
21 août 2007 à 10:53
Merci pour les réponses!!


Mais je ne comprend pas bien ce qui est stocker dans ligne. Il s'agit d'un tableau, d'une chaine de caractères... Quand j'essaie d'afficher sa valeur dans une TextBaox il n'y a rien.



StreamReader



sr =

new



StreamReader
(Nomfichier[0]);


String
ligne;


while
((ligne = sr.ReadLine()) !=

null
){

ligne = sr.ReadLine();

}

sr.Close();

 

Box.Text = ligne;
0
yabiyou Messages postés 43 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 6 septembre 2007
21 août 2007 à 10:53
Merci pour les réponses!!


Mais je ne comprend pas bien ce qui est stocker dans ligne. Il s'agit d'un tableau, d'une chaine de caractères... Quand j'essaie d'afficher sa valeur dans une TextBaox il n'y a rien.



StreamReader



sr =

new



StreamReader
(Nomfichier[0]);


String
ligne;


while
((ligne = sr.ReadLine()) !=

null
){

ligne = sr.ReadLine();

}

sr.Close();

 

Box.Text = ligne;
0
tomlev Messages postés 25 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 28 août 2007
21 août 2007 à 14:55
La fonction StreamReader.ReadLine() lit une ligne du fichier tant que la fin du fichier n'est pas atteinte. Elle renvoie une chaine de caractère (string), par exemple "A=4.566 B=6.333 C=7.555". Quand la fin du fichier est atteinte, la fonction renvoie null (d'où le test dans le while)
0
Rejoignez-nous