Ir para o conteúdo do rodapé
Iron Academy Logo
Aprenda C#
Aprenda C#

Outras categorias

C# Ler e Escrever Arquivos

Tim Corey
24m 34s

As operações de entrada e saída (E/S) de arquivos em C# são essenciais para muitas aplicações de software, permitindo que os desenvolvedores leiam e gravem em arquivos de forma eficiente. Seja para armazenar dados, registrar eventos de aplicativos ou processar grandes quantidades de texto ou dados binários, o C# oferece ferramentas robustas para trabalhar com arquivos. No vídeo de Tim Corey, " Acesso a dados em C#: Arquivos de texto ", ele oferece um passo a passo detalhado dessas operações com arquivos, com foco em como usar arquivos de texto tanto para armazenamento quanto para recuperação de dados. Este artigo tem como objetivo resumir os principais conceitos e técnicas abordados por Tim no vídeo, fornecendo informações práticas sobre operações de entrada/saída de arquivos em C#.

Introdução

Em C#, as operações de entrada e saída de arquivos são essenciais para ler e escrever em arquivos de texto. A classe File fornece métodos estáticos para interagir com arquivos existentes ou criar novos. StreamReader e StreamWriter são comumente usados para ler e escrever arquivos. StreamReader lê arquivos linha por linha, permitindo que você acesse cada linha de texto ou um array de strings. Você também pode usar o loop while para ler arquivos maiores de forma eficiente. A classe StreamWriter é usada para escrever dados em um arquivo, suportando a escrita de strings e arrays. Ela pode ser usada para acrescentar texto a um arquivo existente ou sobrescrever o arquivo inteiro. Métodos como WriteLine e WriteText permitem fácil manipulação de dados dentro de arquivos de texto.

Essas operações são tipicamente realizadas dentro do método static void Main, onde você define o caminho do arquivo. Por exemplo, você pode especificar um nome de arquivo e usar StreamWriter para escrever uma única string ou um array inteiro de strings. A instrução using garante que o arquivo seja devidamente fechado após as operações, evitando vazamentos de recursos. StreamReader também pode ser usado para ler arquivos linha por linha, e exceções podem ser tratadas para gerenciar erros potenciais quando o arquivo não existe ou não pode ser acessado. Essas capacidades de entrada e saída de arquivos fazem do C# uma excelente escolha para trabalhar com arquivos de forma eficiente e eficaz.

Tim introduz o tópico destacando a simplicidade de ler e escrever em arquivos de texto em C#. Ele demonstra como algumas linhas de código podem realizar essas tarefas, tornando os arquivos de texto uma opção viável para armazenamento de dados.

Criando um aplicativo de console de demonstração

Tim começa criando um novo aplicativo de console chamado "TextFileDataAccessDemo" usando o Visual Studio.

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;

namespace TextFileDataAccessDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadLine(); // Keeps the console window open to view the output
        }
    }
}
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;

namespace TextFileDataAccessDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadLine(); // Keeps the console window open to view the output
        }
    }
}

Ele explica o uso de Console.ReadLine para manter a janela do console aberta, permitindo que os usuários vejam o resultado.

Leitura de um arquivo de texto

Tim demonstra como ler de um arquivo de texto usando o método File.ReadAllLines. Ele mostra como lidar com caminhos de arquivos e usar literais de string para evitar caracteres de escape.

string filePath = @"C:\demos\test.txt";
List<string> lines = File.ReadAllLines(filePath).ToList();
string filePath = @"C:\demos\test.txt";
List<string> lines = File.ReadAllLines(filePath).ToList();

O método File.ReadAllLines lê todas as linhas do arquivo especificado e as retorna como um array de strings. Tim converte esse array em uma lista para facilitar a manipulação.

Escrevendo em um arquivo de texto

Tim explica como escrever dados em um arquivo de texto usando o método File.WriteAllLines. Ele demonstra como adicionar novas linhas à lista e gravar a lista atualizada de volta no arquivo.

lines.Add("Sue,Storm,WWIStorm.com");
File.WriteAllLines(filePath, lines);
lines.Add("Sue,Storm,WWIStorm.com");
File.WriteAllLines(filePath, lines);

Este código adiciona uma nova entrada à lista e grava a lista inteira de volta no arquivo.

Criando um modelo de dados e preenchendo-o a partir de um arquivo.

Tim cria uma classe Person para representar a estrutura de dados para cada entrada no arquivo de texto.

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string URL { get; set; }
}
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string URL { get; set; }
}

Ele então lê o arquivo e preenche uma lista de objetos Person.

List<Person> people = new List<Person>();
List<string> lines = File.ReadAllLines(filePath).ToList();

foreach (string line in lines)
{
    string[] entries = line.Split(',');
    Person newPerson = new Person
    {
        FirstName = entries[0],
        LastName = entries[1],
        URL = entries[2]
    };
    people.Add(newPerson);
}
List<Person> people = new List<Person>();
List<string> lines = File.ReadAllLines(filePath).ToList();

foreach (string line in lines)
{
    string[] entries = line.Split(',');
    Person newPerson = new Person
    {
        FirstName = entries[0],
        LastName = entries[1],
        URL = entries[2]
    };
    people.Add(newPerson);
}

Este código lê cada linha, divide-a por vírgulas e cria um objeto Person com os dados extraídos.

Interpolação de strings

Tim apresenta a interpolação de strings, um recurso do C# 6.0 que simplifica o processo de combinação de variáveis ​​e strings. Este método usa o símbolo $ antes da string e chaves {} para embutir variáveis diretamente na string.

foreach (var person in people)
{
    Console.WriteLine($"{person.FirstName} {person.LastName}: {person.URL}");
}
foreach (var person in people)
{
    Console.WriteLine($"{person.FirstName} {person.LastName}: {person.URL}");
}

Esta sintaxe é mais concisa e eficiente em comparação com a concatenação tradicional usando o operador +.

C# Read Write File

Validação de dados

Tim enfatiza a importância de validar os dados ao ler um arquivo de texto. Ele destaca os riscos de presumir a estrutura dos dados e recomenda verificar o comprimento das entradas divididas.

foreach (string line in lines)
{
    string[] entries = line.Split(',');
    if (entries.Length == 3)
    {
        Person newPerson = new Person
        {
            FirstName = entries[0],
            LastName = entries[1],
            URL = entries[2]
        };
        people.Add(newPerson);
    }
    else
    {
        // Handle error
        Console.WriteLine("Invalid data format.");
    }
}
foreach (string line in lines)
{
    string[] entries = line.Split(',');
    if (entries.Length == 3)
    {
        Person newPerson = new Person
        {
            FirstName = entries[0],
            LastName = entries[1],
            URL = entries[2]
        };
        people.Add(newPerson);
    }
    else
    {
        // Handle error
        Console.WriteLine("Invalid data format.");
    }
}

Isso garante que apenas as linhas com o número correto de entradas sejam processadas, evitando possíveis erros de tempo de execução.

Adicionando objetos a uma lista

Tim demonstra como adicionar novos objetos à lista. Ele usa uma instância anônima da classe Person para adicionar uma nova pessoa à lista.

people.Add(new Person { FirstName = "Greg", LastName = "Jones", URL = "WOWT.com" });
people.Add(new Person { FirstName = "Greg", LastName = "Jones", URL = "WOWT.com" });

Isso cria e inicializa um novo objeto Person em uma única linha, que é então adicionado à lista people.

Gravando dados de volta para um arquivo de texto

Tim explica como escrever a lista de objetos Person de volta ao arquivo de texto. Ele converte a lista de objetos Person em uma lista de strings, onde cada string representa uma linha no arquivo.

List<string> output = new List<string>();
foreach (var person in people)
{
    output.Add($"{person.FirstName},{person.LastName},{person.URL}");
}
File.WriteAllLines(filePath, output);
List<string> output = new List<string>();
foreach (var person in people)
{
    output.Add($"{person.FirstName},{person.LastName},{person.URL}");
}
File.WriteAllLines(filePath, output);

Este código itera sobre a lista people, cria uma string CSV para cada objeto Person, e escreve a lista de strings no arquivo.

Conclusão

O guia detalhado de Tim Corey sobre operações de entrada e saída de arquivos em C# oferece informações práticas sobre como ler e gravar em arquivos de texto. Seguindo seus exemplos, os desenvolvedores podem gerenciar dados de forma eficaz usando arquivos de texto e implementar soluções robustas de armazenamento de dados. Para uma compreensão mais aprofundada e uma experiência de aprendizado prática, recomendo fortemente que você assista ao vídeo de Tim Corey, onde ele explora esses conceitos com exemplos do mundo real.

Hero Worlddot related to C# Ler e Escrever Arquivos
Hero Affiliate related to C# Ler e Escrever Arquivos

Ganhe mais compartilhando o que você ama.

Você cria conteúdo para desenvolvedores que trabalham com .NET, C#, Java, Python ou Node.js? Transforme sua expertise em renda extra!

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim