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

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

7 réponses

Répondre au sujet
tomlev 25 Messages postés samedi 22 octobre 2005Date d'inscription 28 août 2007 Dernière intervention - 20 août 2007 à 16:37
+3
Utile
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) );
    }
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de tomlev
tomlev 25 Messages postés samedi 22 octobre 2005Date d'inscription 28 août 2007 Dernière intervention - 20 août 2007 à 14:55
0
Utile
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
yabiyou 43 Messages postés jeudi 19 juillet 2007Date d'inscription 6 septembre 2007 Dernière intervention - 20 août 2007 à 15:23
0
Utile
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
bernie666 427 Messages postés mercredi 1 octobre 2003Date d'inscription 29 janvier 2008 Dernière intervention - 20 août 2007 à 16:32
0
Utile
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
yabiyou 43 Messages postés jeudi 19 juillet 2007Date d'inscription 6 septembre 2007 Dernière intervention - 21 août 2007 à 10:53
0
Utile
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
yabiyou 43 Messages postés jeudi 19 juillet 2007Date d'inscription 6 septembre 2007 Dernière intervention - 21 août 2007 à 10:53
0
Utile
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
tomlev 25 Messages postés samedi 22 octobre 2005Date d'inscription 28 août 2007 Dernière intervention - 21 août 2007 à 14:55
0
Utile
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.