Avatar billede juks Novice
26. november 2007 - 12:23 Der er 9 kommentarer og
1 løsning

hvordan finder jeg sidste linje i en txt fil

jeg har en komma sep. tekst fil hvor jeg skal finde den sidste linje og hente det der står får det første komma
Avatar billede nielle Nybegynder
26. november 2007 - 14:35 #1
Noget i denne stil?

            string line = "";
            using (StreamReader sr = new StreamReader(@"C:\Sti\Til\dinFil.csv"))
            {
                while (sr.Peek() != -1)
                {
                    line = sr.ReadLine();
                }
            }

            string result = line.Split(',')[0];

            Console.WriteLine(result);
Avatar billede juks Novice
26. november 2007 - 14:37 #2
ArrayList list = new ArrayList();
                StreamReader f = new StreamReader(fnm);
                string line;
                while ((line = f.ReadLine()) != null)
                {
                    list.Add(line);
                }
                f.Close();
              // string test = list.ToString() ;
                int aTest = list.Count ;
Avatar billede nielle Nybegynder
26. november 2007 - 14:56 #3
Hvis du kun har brug for den sidste linje er der ingen speciel grund til at gemme alle de foregående i et array.

I øvrigt bør du bruge List<string> i stedet for en ArrayList - det performere bedre.
Avatar billede juks Novice
26. november 2007 - 15:10 #4
hvordan kan jeg, kan jeg så tælle dem ,
Avatar billede nielle Nybegynder
26. november 2007 - 15:12 #5
F.eks. sådan:

            string line = "";
            int antalLinjer = 0;

            using (StreamReader sr = new StreamReader(@"C:\Sti\Til\dinFil.csv"))
            {
                while (sr.Peek() != -1)
                {
                    antalLinjer++;
                    line = sr.ReadLine();
                }
            }

            string result = line.Split(',')[0];

            Console.WriteLine("Antal linjer: {0} : {1}", antalLinjer, result);
Avatar billede juks Novice
26. november 2007 - 17:33 #6
ja det er klart . smid et svar ;-.)
Avatar billede nielle Nybegynder
26. november 2007 - 17:57 #7
Svar :^)
Avatar billede arne_v Ekspert
27. november 2007 - 02:22 #8
Hvis man skal bruge den sidste linie i en fil og filen er meget stor kan man
blive nødt til at gribe til de mere brutale metoder.

Jeg lavede engang følgende hack:

    public static string ReadLastLine(string fnm)
    {
        FileStream fs = new FileStream(fnm, FileMode.Open, FileAccess.Read);
        long l = fs.Length;
        int n = 1000;
        long ix = l - n;
        if(ix < 0)
        {
            n = n + (int)ix;
            ix = 0;
        }
        fs.Seek(ix, SeekOrigin.Begin);
        byte[] b = new byte[n];
        fs.Read(b, 0, n);
        fs.Close();
        int nl = n - 2;
        while(nl >= 0 && b[nl] != '\n') nl--;
        nl++;
        return Encoding.Default.GetString(b, nl, n - nl);
    }
Avatar billede arne_v Ekspert
27. november 2007 - 02:49 #9
Man bør bruge List<> fremfor ArrayList fordi den er type sikker og performer meget bedre
for value type (performance forbedringen er meget lille ved reference typer).
Avatar billede juks Novice
27. november 2007 - 02:53 #10
ok bruger jeg faktisk også nu :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester