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.
Crie um arquivo de texto de exemplo no Bloco de notas. Siga estas etapas:
- Cole o texto hello world no Bloco de notas.
- Salve o arquivo como Sample.txt.
Iniciar o Microsoft Visual Studio.
No menu Arquivo , aponte para Novoe selecione Projeto.
Selecione Projetos do Visual C# em Tipos de Projeto e, em seguida, selecione Aplicativo de Console em Modelos.
Adicione o seguinte código ao início do arquivo Class1.cs:
using System.IO;
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."); }
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.
Inicie o Visual Studio.
No menu Arquivo , aponte para Novoe selecione Projeto.
Selecione Projetos do Visual C# em Tipos de Projeto e, em seguida, selecione Aplicativo de Console em Modelos.
Adicione o seguinte código ao início do arquivo Class1.cs:
using System.IO;
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."); }
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
Escreva 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.
Inicie o Visual Studio.
No menu Arquivo , aponte para Novoe clique em Projeto.
Clique em Projetos do Visual C# em Tipos de Projeto e, em seguida, clique em Aplicativo de Console em Modelos.
Adicione o seguinte código ao início do arquivo Class1.cs:
using System.IO; using System.Text;
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."); }
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.");
}
}
}
}
Listagem de código completa para escrever 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 problemas
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.