Lecture fichier .txt + ajout dans un datatable

[Résolu]
Signaler
Messages postés
34
Date d'inscription
jeudi 9 octobre 2008
Statut
Membre
Dernière intervention
18 juin 2010
-
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010
-
Bonjour,
Alors j'aimerais avoir quelques eclaircissement sur la lecture d'un fichier texte.
Donc voici un bout:

27/01/09 09:58:29 ;PRVOIP 1;Receive Xml Id [0] Name Xml [file00.xml] Ip:Port [250.0.0.68:4402] Type [record]
Command [START]
27/01/09 09:58:29 ;PRVOIP 1;Record File : J:\logger\rec.mpg
27/01/09 09:58:34 ;PRVOIP 1;Flux Present ? [1] in [250.0.0.68:4402] id[0]
27/01/09 09:59:01 ;PRVOIP 3;Start PRVOIP Id Module [3] Path Pull Xml File [J:\Users\root\Desktop\stream_pull]

C'est un fichier texte de 100 lignes environs mais jaimerais récuperer seulement les 10 dernieres les lignes.

Ensuite apres les avoir récuperer j'aimerai les afficher dans un GridView donc je sais qu'il faut que je passe par une DataTable mais le problème c'est comment reussir a faire 3 colonnes :s.

Merci de vos réponses

2 réponses

Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010

voila un petit code vite fait

        private void button5_Click(object sender, EventArgs e)
        {
List<yourDataStructure> myDS = null;
            List<string> ls = new List<string>();
            try
            {
                using (StreamReader sr = new StreamReader(@"C:\asd.txt"))
                {
                    String line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        ls.Add(line);
                    }
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.Write(ex.Message);
            }

            List<string> last10Els = null;
            if (ls.Count >= 10)
                last10Els = ls.GetRange(ls.Count - 10, 10);

            if (last10Els != null)
            {
                myDS  = BuildDataStructure(last10Els);
            }

        }

  private List<yourDataStructure> BuildDataStructure(List<string> els)
        {
            List<yourDataStructure> yds = new List<yourDataStructure>();

            yourDataStructure oyds = null;
            foreach (string s in els)
            {
                oyds = new yourDataStructure();
                ExtractData(s, ref oyds);
                yds.Add(oyds);
            }
            return yds;
        }
        private void ExtractData(string dataLine, ref yourDataStructure oyds)
        {
            try
            {
                oyds.firstColumn = dataLine.Substring(0, 8);
                oyds.secondColumn = dataLine.Substring(9, 8);
                oyds.thirdColumn = dataLine.Substring(19, dataLine.Length - 19);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.Write(ex.Message);
            }
        }

    public class yourDataStructure
    {
        public string firstColumn { get; set; }
        public string secondColumn { get; set; }
        public string thirdColumn { get; set; }
    }

apres il te suffit de boucler sur myDS et de faire tes inserts dans la db
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010

je suppose que pour les 3 colonnes ce serait la date, l'heure et le reste ?

sachant que la taille du string date et heure sont fixes,

tu pourrais faire un substring pour récupérer les différentes colonnes

pour ce qui est de lire seulement les 10 dernières lignes, tu vas devoir parcourir tout le fichier, le mettre dans une liste par exemple et prendre les 10 derniers éléments. (c'est une des solutions, la plus facile à réaliser je trouve)

voilà j'éspère que ca t'aide