Primeiros passos com o namespace System.IO – Revista easy .Net Magazine - Parte II
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.
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:
Nota do DevMan
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. |
Nota do DevMan
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 "
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo