De que se trata o artigo: O artigo apresenta as classes que o .NET framework possui para realizarmos manipulação de arquivos gravados no sistema operacional ou arquivos/informações alocados na memória do computador, utilizando práticas que podem melhorar o desempenho e manter a segurança nas atividades relacionadas a operações IO (entradas e saídas) em aplicações .NET.
Em que situação o tema é útil: Sempre que for preciso editar, criar ou excluir algum arquivo hospedado no sistema
operacional, ou manter dados gravados temporariamente na memória do computador, obtendo o máximo
de performance no trabalho com dados de diversos formatos.
Primeiros passos com o namespace System.IO – Parte II: Neste artigo veremos as principais classes derivadas de Stream e que são usadas para manipulação de arquivos. Apresentaremos as classes File, Directory, StreamReader, StreamWriter e BufferedStream, explicando seus principais métodos e exemplificando o uso das mesmas.
Primeiros passos com o namespace System.IO - Parte 1
Conforme já comentamos no primeiro artigo, as tarefas de manipulação de arquivos são tarefas muito comuns no dia-a-dia do desenvolvedor, porém é fundamental o conhecimento dos recursos nativos do framework para tornar estas tarefas mais produtivas e seguras.
Neste artigo vamos estudar como uma aplicação pode utilizar o .NET framework para ler e escrever arquivos,
Para podermos realizar a manipulação de arquivos, criando, adicionando ou removendo conteúdo, ou até mesmo apenas lendo informações contidas nestes, precisamos primeiro entender como funciona o mecanismo de transferência de dados gravados para a aplicação que está solicitando os mesmos, e vice versa.
Para que esta transferência de dados seja possível o framework possui uma série de classes que derivam de uma classe base, chamada Stream. Um Stream pode ser classificado como o objeto que realiza a conexão entre a aplicação que está necessitando manipular os dados e a fonte onde estes dados estão armazenados, podendo ser o disco rígido, a memória, a internet, o próprio teclado etc. Streams não se limitam apenas a trabalhar com arquivos, mas também são aplicados nas transferências de dados como vídeos, imagens, voz e demais dados que necessitem de transmissão de dados. A principal função dos Streams é permitir a interação da aplicação com elementos externos, sejam eles quais forem.
Agora que conhecemos um pouco mais sobre o conceito de Stream, vamos conhecer quais as principais propriedades e métodos implementados pela classe abstrata Stream do .NET. Assim como as demais classes de manipulação I/O, a classe Stream também está localizada no namespace System.IO e possui as propriedades apresentadas na Tabela 1 e os métodos apresentados na Tabela 2 a seguir:
I/O: Esta sigla é muito utilizada na computação e significa Input/Output (Entrada/Saída). Refere-se à comunicação de entrada e saída de dados entre softwares ou hardwares. Operações de entrada e saída de dados armazenados em um disco rígido são consideradas uma operação de I/O, assim como operações de entrada e saída entre um computador e uma impressora, mouse, teclado, scanner etc.
Propriedade | Descrição |
---|---|
CanRead | Esta propriedade determina quando o Stream suporta leitura de dados. |
CanSeek | Esta propriedade determina quando o Stream suporta seeking. Seeking é uma busca de uma posição no Stream. Através do Seek podemos posicionar o cursor de leitura ou gravação em um determinado local e ler ou gravar a partir deste local. |
CanTimeOut | Determina se o Stream possui um Timeout, ou seja, se a operação atual com o Stream pode expirar depois de determinado tempo. |
CanWrite | Determina se o Stream permite gravação de dados (escrita). |
Length | Esta propriedade retorna o tamanho do Stream, em bytes. |
Position | Retorna e permite informar qual a posição do cursor no Stream. Esta posição não pode ser maior que o tamanho retornado pela propriedade Length. |
ReadTimeout | Informação de qual é o tempo limite para operações de leitura do Stream. |
WriteTimeout | Informação de qual é o tempo limite para operações de gravação (escrita) do Stream. |
Método | Descrição |
---|---|
Close | Fecha o Stream e libera todos os recursos associados a ele. |
Flush | Limpa qualquer buffer existente para o Stream e força as alterações para que sejam gravadas na fonte de dados. |
Read | Este método executa uma leitura sequencial no Stream, conforme o número de bytes definido e a partir da posição atual do cursor no Stream, atualizando esta mesma posição após a leitura. |
ReadByte | Executa a leitura de apenas um byte no Stream, partindo da posição atual e atualizando esta posição após a leitura. É o mesmo que executar o método Read passando como parâmetros apenas um byte. |
Seek | Método que permite definir a posição do cursor no Stream sem a necessidade de se realizar a leitura até esta posição. |
SetLength | Define o tamanho do Stream. Caso o tamanho informado seja menor que o tamanho de dados contido no Stream este será truncado. Se for maior, apenas será expandido para o novo tamanho. |
Write | Método que permite a gravação de informação no Stream, informando o número de bytes desta informação e atualizando o mesmo para a nova posição após a gravação. |
WriteByte | Realiza o mesmo que no método Write, porém grava apenas um byte no Stream. |
Buffer: Termo utilizado para denominar uma região da memória do computador que está alocada para o armazenamento temporário de dados, sendo possível realizar leituras e gravações neste espaço.
A Figura 1 ilustra como os diferentes tipos de Streams, contidos no .net framework, se relacionam para fornecer uma estrutura organizada de leitura e gravação de dados em diversas fontes de dados e também em algumas classes de leitura (reader) e escrita (writer) que servem de apoio para o trabalho com Streams. Durante este artigo veremos os principais e mais utilizados Streams e suas classes de apoio.
Classes de Apoio para Streams
As classes de Streams podem ser utilizadas sozinhas ou em conjunto com classes de apoio, que são classes que nos fornecem serviços que facilitam a interação com os Streams.
Com a classe File podemos realizar uma série de operações com arquivos, como a leitura e escrita do conteúdo de um arquivo, a criação ou a abertura de um arquivo com permissões de somente leitura, a criação ou escrita de um arquivo com permissões de escrita, além de operações básicas com arquivos como a verificação se o arquivo pesquisado existe, exclusão de arquivos, dentre outras.
A classe File auxilia o trabalho com os Streams pelo fato de possuir alguns métodos específicos que retornam instâncias de classes do tipo Stream já abertas e prontas para a utilização. O objeto do tipo Stream mais básico retornado pela classe File é o objeto FileStream, que vamos estudar profundamente mais tarde, mas que tem como objetivo representar um arquivo no sistema de arquivos e nos possibilita interagir com o mesmo. Além deste objeto mais genérico, FileStream, a classe File também possui métodos que retornam Streams, mais específicos como o objeto StreamReader, que é um objeto que também representa um arquivo, porém com permissões de operações relacionadas somente à leitura dos dados deste arquivo, ou seja, somente será possível ler dados com este tipo de Stream.
Veremos a seguir as classes de apoio para Streams disponibilizadas pelo .net framework.
Classe File
Como comentamos anteriormente, a classe File possui uma série de propriedades e métodos que possibilitam o trabalho com Streams de uma forma mais simplificada. Para entender melhor como esta classe pode nos auxiliar, podemos verificar na Tabela 3 os seus principais métodos.
Método | Descrição |
---|---|
AppendAllText | Adiciona um texto ao final do conteúdo de um arquivo existente, ou, no caso do arquivo não existir, cria o mesmo com o texto como conteúdo. |
AppentText | Abre um arquivo, ou cria um novo quando não existir, e retorna uma instância da classe StreamWriter a qual é preparada para a escrita de conteúdo no arquivo. |
Copy | Cria uma cópia do arquivo. |
Create | Cria um novo arquivo conforme definições do objeto e retorna uma instância de um FileStream. |
CreateText | Cria ou abre um arquivo e retorna a instância de um ... |
Confira outros conteúdos:
Teste unitário com NUnit
Como migrar projetos do ASP.NET MVC...
Crie relatórios com o Stimulsoft...
Promoção de Natal
Oferta exclusiva de Natal!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 59,90
Total: R$ 718,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 59,90 /mês
Total: R$ 718,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.