none
Ler e armazenar a ultima linha de um arquivo

    Question

  • Caros,

     

    Tem como eu ler somente a ultima linha de uma arquivo texto, por exempo tenho o seguinte arquivo texto:

    STBD,LIGOBD_67,2010
    22,6A,16D
    1,LIGOBD_67_IC,,,A,6.878741E-03,0,0,-32767,32767,800.00000000,5.00000000,P
    2,LIGOBD_67_IB,,,A,6.793260E-03,0,0,-32767,32767,800.00000000,5.00000000,P
    3,LIGOBD_67_IA,,,A,6.857028E-03,0,0,-32767,32767,800.00000000,5.00000000,P
    4,LIGOBD_67_IN,,,A,5.789093E-05,0,0,-32767,32767,800.00000000,5.00000000,P
    5,LIGOBD_67_VC,,,V,5.695337E-03,0,0,-32767,32767,230000.00000000,115.00000000,P
    6,LIGOBD_67_VB,,,V,3.728576E-02,0,0,-32767,32767,230000.00000000,115.00000000,P
    1,LIGOBD_67_VA,,,0
    2,RETRIP-50BF,,,0
    3,DJ-ABERTO,,,0
    4,DJ-FECH-C,,,0
    5,DJ-FECH-B,,,0
    6,DJ-FECH-A,,,0
    7,PART-EXT-BF-C,,,0
    8,PART-EXT-BF-B,,,0
    9,PART-EXT-BF-A,,,0
    10,PART-EXT-BF3P,,,0
    11,MCB-TP-LT,,,0
    12,MCB-TP-BARRA,,,0
    13,DRB01-INPUT13,,,0
    14,DRB01-INPUT14,,,0
    15,DRB01-INPUT15,,,0
    16,DRB01-INPUT16,,,0
    60
    1
    1200,734
    18/12/2008,11:59:15.587500
    18/12/2008,11:59:15.688000
    BINARY
    1
    0,-5h30
    B,3


    Gostaria de ler somente a ultima linha (B,3) e armazenar em uma variável, para utilizar posteriormente.

    Obs.: Este é apenas um arquivo de exemplo, irei trabalhar com arquivos de log, onde a quantidade linhas não são fixas.

    Grato

    Thursday, July 14, 2011 4:00 PM

Answers

All replies

  • Olá

    Verifique se isto ajuda:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    
    namespace streamreader
    {
      class Program
      {
        static void Main(string[] args)
        {
          StreamReader st = new StreamReader("test.txt");
          string str = st.ReadToEnd();
          int x = str.LastIndexOf('\n');
          string lastline = str.Substring(x+1);
          Console.WriteLine(lastline);
          Console.ReadLine();
        }
      }
    }
    

    fonte: http://www.codeguru.com/forum/showthread.php?t=459778

     

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    Thursday, July 14, 2011 4:28 PM
  • Douglas...

    Você pode usar o método File.ReadAllLines, tipo:

    public string ReadLastLine(string fileName)
    {
     string[] readText = File.ReadAllLines(fileName);
     return readText[readText.Lenght-1];
    }
    

    Mais:

    http://msdn.microsoft.com/en-us/library/s2tte0y1.aspx

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    • Proposed as answer by Breno Riba Thursday, July 14, 2011 4:44 PM
    • Marked as answer by Douglas Canto Thursday, July 14, 2011 6:02 PM
    Thursday, July 14, 2011 4:39 PM
  • Rogério,

    Muito obrigado, utilizei o seu código e funcionou perfeitamente. Abaixo segue o código que fiz de teste:

    namespace Testes
    {
      class Program
      {
        static void Main(string[] args)
        {
          try
          {
            String ultima = "";
            string[] readText = File.ReadAllLines("dados.log");
            ultima = readText[readText.Length - 1];
            Console.WriteLine(ultima);
            Console.ReadLine();      
    
          }
          catch (Exception e)
          {
            // houve algum erro!
            Console.WriteLine("Não consegui ler o conteúdo do arquivo");
            Console.WriteLine(e.Message);
          }
    
          Console.WriteLine("Pressione qualquer tecla para sair...");
          // pausa o programa
          Console.ReadKey();
        }
      }
    }
    
    


    Thursday, July 14, 2011 6:02 PM