Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
E/S de ficheiro e fluxo (entrada/saída) refere-se à transferência de dados para ou a partir de um meio de armazenamento. No .NET, os System.IO namespaces contêm tipos que permitem a leitura e a gravação, de forma síncrona e assíncrona, em fluxos de dados e arquivos. Esses namespaces também contêm tipos que executam compactação e descompactação em arquivos e tipos que permitem a comunicação por meio de pipes e portas seriais.
Um arquivo é uma coleção ordenada e nomeada de bytes que tem armazenamento persistente. Ao trabalhar com arquivos, você trabalha com caminhos de diretório, armazenamento em disco e nomes de arquivos e diretórios. Por outro lado, um fluxo de dados é uma sequência de bytes que pode-se usar para ler e escrever em um meio de armazenamento, que pode ser um dos vários tipos de armazenamento (por exemplo, discos ou memória). Assim como existem vários substratos de armazenamento além dos discos, existem vários tipos de fluxos além dos fluxos de ficheiros, tal como fluxos de rede, de memória e de canais.
Ficheiros e diretórios
Você pode usar os tipos no System.IO namespace para interagir com arquivos e diretórios. Por exemplo, você pode obter e definir propriedades para arquivos e diretórios e recuperar coleções de arquivos e diretórios com base em critérios de pesquisa.
Para convenções de nomenclatura de caminho e as maneiras de expressar um caminho de arquivo para sistemas Windows, inclusive com a sintaxe de dispositivo DOS suportada no .NET Core 1.1 e posterior e no .NET Framework 4.6.2 e posterior, consulte Formatos de caminho de arquivo em sistemas Windows.
Aqui estão algumas classes de arquivo e diretório comumente usadas:
File - fornece métodos estáticos para criar, copiar, excluir, mover e abrir arquivos, e ajuda a criar um FileStream objeto.
FileInfo - fornece métodos de instância para criar, copiar, excluir, mover e abrir arquivos, e ajuda a criar um FileStream objeto.
Directory - Fornece métodos estáticos para criar, mover e enumerar através de diretórios e subdiretórios.
DirectoryInfo - fornece métodos de instância para criar, mover e enumerar através de diretórios e subdiretórios.
Path - fornece métodos e propriedades para processar cadeias de caracteres de diretório de forma multiplataforma.
Você sempre deve fornecer um tratamento robusto de exceções ao chamar métodos de sistema de arquivos. Para obter mais informações, consulte Tratamento de erros de E/S.
Além de usar essas classes, os usuários do Visual Basic podem usar os métodos e propriedades fornecidos pela Microsoft.VisualBasic.FileIO.FileSystem classe para E/S de arquivo.
Consulte Como copiar diretórios, Como criar uma listagem de diretório e Como enumerar diretórios e arquivos.
Fluxos
A classe base abstrata Stream suporta leitura e escrita de bytes. Todas as classes que representam fluxos herdam da Stream classe. A Stream classe e suas classes derivadas fornecem uma visão comum de fontes de dados e repositórios e isolam o programador dos detalhes específicos do sistema operacional e dispositivos subjacentes.
Os fluxos envolvem três operações fundamentais:
Leitura - transferência de dados de um fluxo para uma estrutura de dados, como uma matriz de bytes.
Gravação - transferência de dados de uma fonte de dados para um fluxo.
Buscando - consultando e modificando a posição atual dentro de um fluxo.
Dependendo da fonte de dados ou repositório subjacente, um fluxo pode suportar apenas alguns desses recursos. A classe PipeStream não suporta busca. As propriedades CanRead, CanWrite e CanSeek de um fluxo especificam as operações que o fluxo suporta.
Aqui estão algumas classes de fluxo comumente usadas:
FileStream – para leitura e escrita num ficheiro.
IsolatedStorageFileStream – para leitura e gravação em um arquivo em armazenamento isolado.
MemoryStream – para leitura e escrita na memória como armazenamento de suporte.
BufferedStream – para melhorar o desempenho das operações de leitura e escrita.
NetworkStream – para leitura e escrita através de tomadas de rede.
PipeStream – para ler e escrever sobre tubos anónimos e nomeados.
CryptoStream – para ligar fluxos de dados a transformações criptográficas.
Para obter um exemplo de como trabalhar com fluxos de forma assíncrona, consulte E/S de arquivo assíncrono.
Leitores e escritores
O namespace System.IO também fornece tipos para ler caracteres codificados de fluxos e gravá-los em fluxos. Normalmente, os fluxos são projetados para entrada e saída de bytes. Os tipos de leitor e gravador lidam com a conversão dos caracteres codificados de e para bytes para que o fluxo possa concluir a operação. Cada classe de leitor e gravador está associada a um fluxo, que pode ser recuperado através da propriedade BaseStream da classe.
Aqui estão algumas classes de leitores e escritores comumente usadas:
BinaryReader e BinaryWriter – para ler e escrever tipos de dados primitivos como valores binários.
StreamReader e StreamWriter – para leitura e escrita de caracteres usando um valor de codificação para converter os caracteres em bytes e vice-versa.
StringReader e StringWriter – para ler e escrever caracteres de e para strings.
TextReader e TextWriter – servem como classes base abstratas para outros leitores e escritores que leem e escrevem caracteres e strings, mas não dados binários.
Consulte Como ler texto de um arquivo, Como gravar texto em um arquivo, Como ler caracteres de uma cadeia de caracteres e Como gravar caracteres em uma cadeia de caracteres.
Operações de E/S assíncronas
Ler ou gravar uma grande quantidade de dados pode exigir muitos recursos. Você deve executar essas tarefas de forma assíncrona se seu aplicativo precisar permanecer responsivo ao usuário. Com operações de E/S síncronas, o thread da interface do usuário é bloqueado até que a operação que consome muitos recursos seja concluída. Use operações de E/S assíncronas ao desenvolver aplicativos da Windows Store 8.x para evitar criar a impressão de que seu aplicativo parou de funcionar.
Os membros assíncronos contêm Async em seus nomes, como os CopyToAsyncmétodos , FlushAsync, ReadAsync, e WriteAsync . Você usa estes métodos com as palavras-chave async e await.
Para obter mais informações, consulte E/S de arquivo assíncrono.
Compressão
Compressão refere-se ao processo de redução do tamanho de um arquivo para armazenamento. Descompressão é o processo de extrair o conteúdo de um arquivo compactado para que eles estejam em um formato utilizável. O System.IO.Compression namespace contém tipos para compactar e descompactar arquivos e fluxos.
As seguintes classes são freqüentemente usadas ao compactar e descompactar arquivos e fluxos:
ZipArchive – para criar e recuperar entradas no arquivo zip.
ZipArchiveEntry – para representar um ficheiro comprimido.
ZipFile – para criar, extrair e abrir uma embalagem comprimida.
ZipFileExtensions – para criar e extrair entradas numa embalagem comprimida.
DeflateStream – para comprimir e descomprimir fluxos utilizando o algoritmo Deflate.
GZipStream – para comprimir e descomprimir fluxos em formato de dados gzip.
Consulte Como: Compactar e extrair arquivos.
Armazenamento isolado
O armazenamento isolado é um mecanismo de armazenamento de dados que fornece isolamento e segurança, definindo formas padronizadas de associar código a dados salvos. O armazenamento fornece um sistema de ficheiros virtual que está isolado por utilizador, assembly e (opcionalmente) por domínio. O armazenamento isolado é particularmente útil quando seu aplicativo não tem permissão para acessar arquivos do usuário. Pode guardar definições ou ficheiros para a sua aplicação de uma forma que seja controlada pela política de segurança do computador.
O armazenamento isolado não está disponível para aplicações da Loja Windows 8.x; Em vez disso, use classes de dados do aplicativo no Windows.Storage namespace. Para obter mais informações, consulte Dados do aplicativo.
As seguintes classes são freqüentemente usadas ao implementar armazenamento isolado:
IsolatedStorage – fornece a classe base para implementações de armazenamento isolado.
IsolatedStorageFile – fornece uma área de armazenamento isolada que contém arquivos e diretórios.
IsolatedStorageFileStream - expõe um arquivo dentro de armazenamento isolado.
Consulte Armazenamento isolado.
Operações de E/S em aplicações da Microsoft Store
O .NET para aplicativos da Windows Store 8.x contém muitos dos tipos para leitura e gravação em fluxos; no entanto, esse conjunto não inclui todos os tipos de E/S do .NET.
Algumas diferenças importantes a serem observadas ao usar operações de E/S em aplicativos da Windows Store 8.x:
Tipos especificamente relacionados a operações de arquivo, como File, FileInfoDirectory e DirectoryInfo, não estão incluídos no .NET para aplicativos da Windows Store 8.x. Em vez disso, utilize os tipos no namespace da Windows Runtime, como Windows.Storage e StorageFile.
O armazenamento isolado não está disponível; em vez disso, use dados do aplicativo.
Use métodos assíncronos, como ReadAsync e WriteAsync, para impedir o bloqueio do thread da interface do usuário.
Os tipos ZipFile de compactação baseados em caminho e ZipFileExtensions não estão disponíveis. Em vez disso, use os tipos no Windows.Storage.Compression namespace.
Você pode converter entre fluxos do .NET Framework e fluxos do Tempo de Execução do Windows, se necessário. Para obter mais informações, consulte Como converter entre fluxos do .NET Framework e fluxos do Tempo de Execução do Windows ou WindowsRuntimeStreamExtensions.
Para obter mais informações sobre operações de E/S em um aplicativo da Windows Store 8.x, consulte Guia de início rápido: lendo e gravando arquivos.
E/S e segurança
Ao usar as classes no namespace, você deve seguir os requisitos de segurança do System.IO sistema operacional, como listas de controle de acesso (ACLs) para controlar o acesso a arquivos e diretórios. Este requisito é adicional a quaisquer outros FileIOPermission requisitos. Você pode gerenciar ACLs programaticamente. Para obter mais informações, consulte Como adicionar ou remover entradas da lista de controle de acesso.
As políticas de segurança padrão impedem que aplicativos da Internet ou da intranet acessem arquivos no computador do usuário. Portanto, não use as classes de E/S que exigem um caminho para um arquivo físico ao escrever código que será baixado pela Internet ou intranet. Em vez disso, use armazenamento isolado para aplicativos .NET.
Uma verificação de segurança é executada somente quando o fluxo é construído. Portanto, não abra um fluxo e, em seguida, passe-o para domínios de código ou aplicativo menos confiáveis.
Tópicos relacionados
Tarefas comuns de E/S
Fornece uma lista de tarefas de E/S associadas a arquivos, diretórios e fluxos, além de links para conteúdo relevante e exemplos para cada tarefa.E/S de arquivo assíncrona
Descreve as vantagens de desempenho e a operação básica da E/S assíncrona.Armazenamento isolado
Descreve um mecanismo de armazenamento de dados que fornece isolamento e segurança definindo maneiras padronizadas de associar código a dados salvos.Tubos
Descreve as operações de pipes anônimos e pipes nomeados no .NET.ArquivosMemory-Mapped
Descreve arquivos mapeados na memória, que contêm o conteúdo de arquivos no disco na memória virtual. Você pode usar arquivos mapeados na memória para editar arquivos muito grandes e criar memória compartilhada para comunicação entre processos.