Escrito em March 17th, 2009 as 6:11 pm por

7 Comentários

Vamos a um código para abrir arquivos texto e ler seu conteúdo linha a linha.

C#

/// <summary>
/// Abre um Arquivo Texto e Lê Linha a Linha
/// </summary>
/// <param name="caminho">Caminho do Arquivo</param>
/// <exception cref="System.IO.FileNotFoundException">Caso o Arquivo Indicado não Possa ser Encontrado</exception>
public void AbreArquivoTextoLinhaALinha(string caminho)
{
      // Cria Objetos
      System.IO.StreamReader sr;
      string linhaAtual;
      // Verifica se o Arquivo não Existe
      if (! System.IO.File.Exists(caminho))
      {
            throw (new System.IO.FileNotFoundException("Não foi Possível Localizar o Arquivo Especificado"));
      }
      // Inicializa o StreamReader
      using (sr = new System.IO.StreamReader(caminho))
      {
            while (! sr.EndOfStream)
            {
                  // Recupera a Linha
                  linhaAtual = sr.ReadLine();
                  // Processar a Linha AQUI!!!
            }
      }
}

VB.NET

''' <summary>
''' Abre um Arquivo Texto e Lê Linha a Linha
''' </summary>
''' <param name="caminho">Caminho do Arquivo</param>
''' <exception cref="System.IO.FileNotFoundException">Caso o Arquivo Indicado não Possa ser Encontrado</exception>
Public Sub AbreArquivoTextoLinhaALinha(ByVal caminho As String)
      ' Cria Objetos
      Dim sr As System.IO.StreamReader
      Dim linhaAtual As String
      ' Verifica se o Arquivo não Existe
      If (System.IO.File.Exists(caminho) <> True) Then
            Throw (New System.IO.FileNotFoundException("Não foi Possível Localizar o Arquivo Especificado"))
      End If
      Try
            ' Inicializa o StreamReader
            sr = New System.IO.StreamReader(caminho)
            ' Looping nas Linhas
            While (Not sr.EndOfStream)
                  ' Recupera a Linha do Arquivo
                  linhaAtual = sr.ReadLine()
                  ' Processar a Linha AQUI!!!
            End While
      Finally
            If (Not sr Is Nothing) Then
                  sr.Dispose()
            End If
End Try

Você deve ter reparado que eu não uso o método (Close()) para o Objeto StreamReader.
Isso se deve ao fato do método (Dispose()) que é definido pela implementação da interface (IDisposable) do objeto realizar a chamada do método (Close()).

No caso do C#, a utilização do (using) implica na execução automática do método (Dispose()) e no VB.Net temos de fazer-lo manualmente com o uso do (Try/Catch/Finnaly).

Se você gostou do post, deixe um comentário ou assine nosso RSS RSS.

Posts Relacionados:

  1. Abrindo Arquivos de Texto e Lendo Todo o Conteúdo
  2. Calculando CRC de Strings (Texto), Array’s e Arquivos
  3. Convertendo Caminhos Absolutos e URL’s Absolutas para Caminhos Relativos e URL’s Relativas
  4. Criando um documento Pdf com iTextSharp – Parte II
  5. Manipulando Arquivos e Diretórios no .NET
  6. Criando um documento Pdf com iTextSharp – Parte III (Rotacionar Folha)
  7. Criando um documento pdf com iTextSharp – Parte I
, , ,

7 Respostas to “Abrindo Arquivos Texto e Lendo Linha a Linha”


  1. Jéferson Spencer

    2 years ago

    Boa tarde Guilherme tive um problema uma vez com a detecção do Encoding de um arquivo texto. Você sabe como fazer isto de forma eficiente em C#?


  2. Guilherme Bacellar

    2 years ago

    Opa, salve salve.
    Aqui no serviço tivemos o mesmo problema.
    Assim, pelo que descobrimos junto à Microsoft, os arquivos texto não possuem o marcados especifico de codificação.

    Aqui resolvemos padronizando os inputs para UTF-8.
    Como paliativo, teste os encodings UTF-16 e ISO-8859-1.

    Sinto muito se não dei a solução 100% esperada, mas prometo que se descobrirmos por aqui uma solução eu posto ein ;)
    Obrigado por compartilhar sua dúvida conosco e muito sucesso.


  3. Rafael

    11 months ago

    Opa cara, beleza??
    Valew mesmo hein..

    só tive uma dúvida:

    Em C# o porquê daquele “using” antes de “sr = new System.IO.StreamReader(caminho)”

    desculpe minha ignorância hehe…


  4. Ernakh

    6 months ago

    Rafael

    Dessa maneira:
    sr = New System.IO.StreamReader(caminho)

    não necessita adicionar a biblioteca:

    using Sistem.IO;

    sera usada somente naquele momento.

    caso tiver q usar o metodo diversas vezes, ai sim o correto é incluir a biblioteca, pois facilita por ter menos digitação

    ficaria assim:

    sr = StreamReader(caminho);

    espero ter ajudado

    Att


  5. Marcos Saraiva

    6 months ago

    Prezado,

    Vi esse script e é realmente é um máximo. No entanto eu gostaria de saber Guilherme como eu poderia além de ler esse arquivo txt, fazer com que em determinada posição houvesse uma comparação, exemplo na posição 38 e 39 for igual a 00, aí ele começaria a ler as linhas abaixo até a próxima identificação.

    Já vi algo parecido em Java, mas não lembro quais objetos e propriedades foram utilizadas para isso.

    Att,

    Marcos Saraiva


  6. Jose Luiz Gorni

    1 month ago

    Alguem saberia como ler um arquivo .txt e pegar apenas a 1a. linha deste arquivo texto e transportar para um outro arquivo .txt ?? Exemplo :

    Tenho um arquivo texto1.txt

    12081
    arquivo processado
    diferença encontrada

    Preciso gerar um novo arquivo texto2.txt com apenas os dados da 1a.linha do arquivo texto1.txt

    12081

    Se puder me ajudar, fico grato

1 Trackbacks For This Post

  1. Tutoriais de Arquivos em Visual Basic « Programa Aprender & Crescer Says:

    [...] http://www.dotnetmax.org/2009/03/17/abrindo-arquivos-texto-e-lendo-linha-a-linha/ CategoriasExercícios Comentários (0) Trackbacks (0) Deixar um comentário Trackback [...]

Deixa uma Resposta

znjdb32s6g