Do que trata o artigo: O artigo irá descrever os principais recursos da linguagem C# e do framework .Net para trabalhar com arquivos tanto com leitura como gravação destes. Você terá o primeiro contato com as classes disponibilizadas para escrever, ler e apagar arquivos. Também terá contato com as classes que permitem obter dados estatísticos do arquivo como tamanho, data da última modificação e se o arquivo existe. Além dos conceitos envolvidos, será feita uma aplicação de demonstração para que você possa ver os recursos em uso.


Para que serve:
Sempre é necessário ler dados de arquivos quer sejam de texto, arquivos XML ou qualquer outro formato. Existem muitos recursos dentro do framework .Net, mas nem sempre é muito fácil lembrar-se de como usá-los.


Em que situação o tema é útil:
Mesmo com todas as funcionalidades oferecidas pelo sistema operacional, ao desenvolver aplicativos comerciais sempre se acaba precisando escrever dados em arquivos geralmente do tipo texto ou outro formato qualquer para troca de dados entre aplicações. Caso você esteja trabalhando com dados no formato texto e precise de referências rápidas para executar suas tarefas, este artigo oferece o que é necessário para executá-las. Além disto, existem alguns cuidados que você precisará tomar para poder escrever e ler em arquivos e que são expostos neste artigo.

Resumo do DevMan: Todas as informações armazenadas no computador estão dentro de arquivos. Estudando os fundamentos da computação um pouco mais a fundo, você perceberá que até mesmo as pastas (ou diretórios para os mais antigos) consistem de arquivos especiais onde outros arquivos são armazenados. As tarefas mais comuns do programador incluem manipular arquivos verificando se existem ou não dentro do sistema de arquivos da máquina onde o programa está sendo executado. Também é necessário criar os arquivos, atualizar seus dados sobrescrevendo os dados existentes, renomear ou ainda excluir um arquivo que não é mais necessário. Dentro da proposta de não precisar começar de um ponto muito elementar, você tomará conhecimento do que é preciso fazer usando a linguagem C# para executar estas tarefas. Além do contato com os códigos e classes que serão usados, também levaremos em conta alguns pontos com relação à segurança. Outro ponto a ser abordado são os elementos usados pela interface do Windows para facilitar o trabalho com os arquivos. E como sempre, é bom ter um exemplo prático onde tudo o que se aprendeu possa ser aplicado.

Uma das maiores vantagens dos computadores modernos é a possibilidade de se poderem armazenar os dados do trabalho que está sendo feito para se usar mais tarde.

Pense por um momento em quais atividades que você executa diariamente usando os PC´s que fazem uso dos arquivos? Vão aqui algumas da minha lista:

  1. Eu faço login em um computador que armazena em arquivo o meu ID e minha senha;
  2. Após o login, o sistema lê as minhas preferências de uso do computador como o papel de parede e ícones da minha área de trabalho, mais uma vez, armazenado em arquivos;
  3. Quando abro o programa para ler os e-mails, primeiramente preciso fazer o download das mensagens que estão armazenadas em um servidor de internet remoto e gravá-los em minha máquina. Mesmo que eu use um Webmail (como o Gmail ou o Hotmail), as mensagens estão armazenadas em arquivos de um servidor;
  4. Como eu trabalho como programador, o código fonte fica gravado no disco do meu computador em arquivos texto especiais que são abertos pelo Visual Studio;
  5. Se eu preferir jogar, os dados usados para os jogos estão em arquivos;
  6. Músicas também são gravadas geralmente em arquivos MP3.

São tantas as operações feitas usando-se arquivos que se for citar todas elas, o artigo fica sem graça. Mas, esteja certo: uma hora destas você vai precisar fazer o uso da manipulação de arquivos. No início, quando não havia ainda o Windows e os sistemas operacionais eram muito básicos, os programadores precisavam preocupar-se em resolver muitos problemas ao manipular os arquivos. Vejamos alguns destes problemas:

  • Era necessário localizar o arquivo dentro do disco, ler os bytes do mesmo e criar um objeto para manipular o arquivo a partir do endereço lógico do mesmo no disco rígido;
  • Antes de ler os dados, era necessário armazenar os bytes que diziam qual o tipo do arquivo: se binário ou texto. Era preciso guardar o número de bytes no momento da leitura para que fosse assegurado ao ler que o tamanho dos dados estava correto;
  • Se o arquivo estivesse dentro de um sistema UNIX, vários atributos precisavam ser tratados. Estes atributos diziam se se tratava de um arquivo regular, um diretório, um dispositivo de sistema ou ainda um link simbólico para outro arquivo;
  • Também seria necessário verificar se o usuário atualmente carregado no sistema tinha as permissões para ler o arquivo, para executar e gravar. Geralmente, nestes sistemas, nem sempre todas as permissões eram garantidas.

Ou seja, era um trabalho bastante árduo.

Com a chegada dos sistemas operacionais mais modernos, estes passaram a oferecer um conjunto de objetos para executar estas tarefas. Geralmente chamados de API (Application Programming Interfaces), estas bibliotecas cobriam boa parte das tarefas, embora, com alguma complexidade.

A partir do surgimento dos ambientes gerenciados como o framework .Net as tarefas ficaram muito mais simplificadas pois, quase tudo o que se desejar fazer com os arquivos nos programas possuirá uma classe que irá resolver o problema para o programador. Não é possível cobrir todas as classes em um artigo como este, mas, partindo das tarefas mais básicas, vamos descobrindo como fazer as tarefas mais elementares.

Para que você consiga entender bem o artigo e poder executar os exemplos eu espero que você tenha algum conhecimento dos seguintes assuntos:

  • Criação de programa console e Windows Forms usando o Visual Studio;
  • Uso do modo de debug do Visual Studio para corrigir erros no código;
  • Criação de classes.
  • Programação orientada a objetos com C#.

Nota: Apesar do artigo demonstrar as operações de maneira mais elementar deixando de apresentar alguns pontos importantes como criptografia, tabela de caracteres a ser usada (encoding pages) e gerenciamento de permissões, todas estas questões são extensamente cobertas pelo framework .Net e a linguagem C#. Para evitar estender demais o artigo, vamos tratar apenas das questões iniciais. Procure se informar mais sobre o assunto posteriormente.

Classes para ler e gravar arquivos

Basicamente todas as classes usadas para o trabalho com arquivos estão dentro da biblioteca System.IO. Assim, para poder usar estas em seu projeto ou sua classe você precisa adicionar a biblioteca da seguinte forma:

using System.IO; 

A Tabela 1 mostra as principais classes e as funcionalidades que ela provê. Além disto, demonstra também o contexto mais comum onde este tipo de classe será usada.

Tabela 1. Classes para manipulação de arquivos

Classe Funcionalidade
File Usa métodos estáticos para executar tarefas comuns como: criar arquivos de texto, gravar e ler os dados em um arquivo, renomear, excluir e verificar se um arquivo existe.
...

Quer ler esse conteúdo completo? Tenha acesso completo