Lecture fichier .txt + ajout dans un datatable

Résolu
clavelski Messages postés 34 Date d'inscription jeudi 9 octobre 2008 Statut Membre Dernière intervention 18 juin 2010 - 23 mars 2009 à 17:12
GillouXman Messages postés 561 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 10 juin 2010 - 25 mars 2009 à 10:28
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

GillouXman Messages postés 561 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 10 juin 2010
25 mars 2009 à 10:28
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
3
GillouXman Messages postés 561 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 10 juin 2010
25 mars 2009 à 10:06
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
0