Usar o Visual C# para ler e gravar em um arquivo de texto

Este artigo ajuda você a ler e gravar em um arquivo de texto usando o Visual C#.

Versão original do produto: Visual Studio
Número original do KB: 816149

Resumo

A seção Ler um arquivo de texto deste artigo descreve como usar a classe StreamReader para ler um arquivo de texto. As seções Gravar um arquivo de texto (exemplo 1) e Gravar um arquivo de texto (exemplo 2) descrevem como usar a classe StreamWriter para gravar texto em um arquivo.

Ler um arquivo de texto

O código a seguir usa a classe StreamReader para abrir, ler e fechar o arquivo de texto. Você pode passar o caminho de um arquivo de texto para o construtor StreamReader para abrir o arquivo automaticamente. O método ReadLine lê cada linha de texto e incrementa o ponteiro do arquivo para a próxima linha conforme ele lê. Quando o método ReadLine atinge o final do arquivo, ele retorna uma referência nula. Para obter mais informações, consulte Classe StreamReader.

  1. Crie um arquivo de texto de exemplo no Bloco de notas. Siga estas etapas:

    1. Cole o texto hello world no Bloco de notas.
    2. Salve o arquivo como Sample.txt.
  2. Inicie o Microsoft Visual Studio.

  3. No menu Arquivo, aponte para Novo e, em seguida, selecione Projeto.

  4. Selecione Projetos do Visual C# em Tipos de Projeto e, em seguida, selecione Aplicativo de Console em Modelos.

  5. Adicione o seguinte código ao início do arquivo Class1.cs:

    using System.IO;
    
  6. Adicione o seguinte código ao método Main:

    String line;
    try
    {
        //Pass the file path and file name to the StreamReader constructor
        StreamReader sr = new StreamReader("C:\\Sample.txt");
        //Read the first line of text
        line = sr.ReadLine();
        //Continue to read until you reach end of file
        while (line != null)
        {
            //write the line to console window
            Console.WriteLine(line);
            //Read the next line
            line = sr.ReadLine();
        }
        //close the file
        sr.Close();
        Console.ReadLine();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  7. No menu Depurar, selecione Iniciar para compilar e executar o aplicativo. Pressione ENTER e feche a janela Console. A janela Console exibe o conteúdo do arquivo Sample.txt:

    Hello world
    

Gravar um arquivo de texto (exemplo 1)

O código a seguir usa a classe StreamWriter para abrir, gravar e fechar o arquivo de texto. De maneira semelhante à classe StreamReader, você pode passar o caminho de um arquivo de texto para o construtor StreamWriter para abrir o arquivo automaticamente. O método WriteLine escreve uma linha de texto para o arquivo de texto criado.

  1. Inicie o Visual Studio.

  2. No menu Arquivo, aponte para Novo e, em seguida, selecione Projeto.

  3. Selecione Projetos do Visual C# em Tipos de Projeto e, em seguida, selecione Aplicativo de Console em Modelos.

  4. Adicione o seguinte código ao início do arquivo Class1.cs:

    using System.IO;
    
  5. Adicione o seguinte código ao método Main:

    try
    {
        //Pass the filepath and filename to the StreamWriter Constructor
        StreamWriter sw = new StreamWriter("C:\\Test.txt");
        //Write a line of text
        sw.WriteLine("Hello World!!");
        //Write a second line of text
        sw.WriteLine("From the StreamWriter class");
        //Close the file
        sw.Close();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  6. No menu Depurar, selecione Iniciar para compilar e executar o aplicativo. Este código cria um arquivo chamado Test.txt na unidade C. Abra Test.txt em um editor de texto, como o Bloco de notas. Test.txt contém duas linhas de texto:

    Hello World!!
    From the StreamWriter class
    

Gravar um arquivo de texto (exemplo 2)

O código a seguir usa a classe StreamWriter para abrir, gravar e fechar o arquivo de texto. Ao contrário do exemplo anterior, esse código passa dois parâmetros adicionais para o construtor. O primeiro parâmetro é o caminho do arquivo e o nome do arquivo. O segundo parâmetro, true, especifica que o arquivo é aberto no modo de acrescentar. Se você especificar false para o segundo parâmetro, o conteúdo do arquivo será substituído sempre que você executar o código. O terceiro parâmetro especifica Unicode, de modo que StreamWriter codifica o arquivo no formato Unicode. Você também pode especificar os seguintes métodos de codificação para o terceiro parâmetro:

  • ASC11
  • Unicode
  • UTF7
  • UTF8

O método Write é semelhante ao método WriteLine, exceto que o método Write não incorpora automaticamente uma combinação de caracteres CR/LF (retorno de carro ou alimentação de linha). Isso é útil quando você deseja escrever um caractere de cada vez.

  1. Inicie o Visual Studio.

  2. No menu arquivo, aponte para novo e, em seguida, clique em Project.

  3. Clique em Projetos do Visual C# em Tipos de Projeto e, em seguida, clique em Aplicativo de Console em Modelos.

  4. Adicione o seguinte código ao início do arquivo Class1.cs:

    using System.IO;
    using System.Text;
    
  5. Adicione o seguinte código ao método Main:

    Int64 x;
    try
    {
        //Open the File
        StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);
    
        //Write out the numbers 1 to 10 on the same line.
        for(x=0; x < 10; x++)
        {
        sw.Write(x);
        }
    
        //close the file
        sw.Close();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  6. No menu Depurar, selecione Iniciar para compilar e executar o aplicativo. Este código cria um arquivo chamado Test1.txt na unidade C. Abra Test1.txt em um editor de texto, como o Bloco de notas. Test1.txt contém uma única linha de texto: 0123456789.

Conclua a listagem de código para ler um arquivo de texto

//Read a Text File
using System;
using System.IO;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            String line;
            try
            {
                //Pass the file path and file name to the StreamReader constructor
                StreamReader sr = new StreamReader("C:\\Sample.txt");
                //Read the first line of text
                line = sr.ReadLine();
                //Continue to read until you reach end of file
                while (line != null)
                {
                    //write the line to console window
                    Console.WriteLine(line);
                    //Read the next line
                    line = sr.ReadLine();
                }
                //close the file
                sr.Close();
                Console.ReadLine();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Preencha a listagem de código sobre como gravar um arquivo de texto (versão 1)

//Write a text file - Version-1
using System;
using System.IO;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            try
            {
                //Pass the filepath and filename to the StreamWriter Constructor
                StreamWriter sw = new StreamWriter("C:\\Test.txt");
                //Write a line of text
                sw.WriteLine("Hello World!!");
                //Write a second line of text
                sw.WriteLine("From the StreamWriter class");
                //Close the file
                sw.Close();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Preencha a listagem de código sobre como gravar um arquivo de texto (versão 2)

//Write a text file - Version 2
using System;
using System.IO;
using System.Text;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            Int64 x;
            try
            {
                //Open the File
                StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);
                //Writeout the numbers 1 to 10 on the same line.
                for(x=0; x < 10; x++)
                {
                    sw.Write(x);
                }
                //close the file
                sw.Close();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Solucionar problema

Para todas as manipulações de arquivos, é uma boa prática de programação envolver o código dentro de um bloco try-catch-finally para lidar com erros e exceções. Especificamente, talvez você queira que a versão gerencie o arquivo no bloco final para que o arquivo não seja bloqueado indefinidamente. Alguns erros possíveis incluem um arquivo que não existe ou um arquivo que já está em uso.