Lecture fichier .txt + ajout dans un datatable [Résolu]

Messages postés
34
Date d'inscription
jeudi 9 octobre 2008
Dernière intervention
18 juin 2010
- - Dernière réponse : GillouXman
Messages postés
561
Date d'inscription
mardi 4 mars 2008
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
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Dernière intervention
10 juin 2010
3
Merci
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

Merci GillouXman 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de GillouXman
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Dernière intervention
10 juin 2010
0
Merci
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
Commenter la réponse de GillouXman

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.