Lecture de ligne dans un fichier texte [Résolu]

Messages postés
43
Date d'inscription
jeudi 19 juillet 2007
Dernière intervention
6 septembre 2007
- 20 août 2007 à 14:31 - Dernière réponse :
Messages postés
25
Date d'inscription
samedi 22 octobre 2005
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));}

 

}

 }

}

}
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
25
Date d'inscription
samedi 22 octobre 2005
Dernière intervention
28 août 2007
- 20 août 2007 à 16:37
3
Merci
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) );
    }
}

Merci tomlev 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de tomlev
Messages postés
25
Date d'inscription
samedi 22 octobre 2005
Dernière intervention
28 août 2007
- 20 août 2007 à 14:55
0
Merci
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();
Commenter la réponse de tomlev
Messages postés
43
Date d'inscription
jeudi 19 juillet 2007
Dernière intervention
6 septembre 2007
- 20 août 2007 à 15:23
0
Merci
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
Commenter la réponse de yabiyou
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Dernière intervention
29 janvier 2008
- 20 août 2007 à 16:32
0
Merci
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
Commenter la réponse de bernie666
Messages postés
43
Date d'inscription
jeudi 19 juillet 2007
Dernière intervention
6 septembre 2007
- 21 août 2007 à 10:53
0
Merci
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;
Commenter la réponse de yabiyou
Messages postés
43
Date d'inscription
jeudi 19 juillet 2007
Dernière intervention
6 septembre 2007
- 21 août 2007 à 10:53
0
Merci
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;
Commenter la réponse de yabiyou
Messages postés
25
Date d'inscription
samedi 22 octobre 2005
Dernière intervention
28 août 2007
- 21 août 2007 à 14:55
0
Merci
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)
Commenter la réponse de tomlev

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.