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

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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

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