Partilhar via


Arquivo e Stream I/O

Arquivar e transmitir I/O (entrada/saída) refere-se à transferência de dados para ou de um meio de armazenamento. Em .NET, os System.IO espaços de nome contêm tipos que permitem a leitura e a escrita, tanto sincronizadas como assíncroneas, em fluxos de dados e ficheiros. Estes espaços de nome também contêm tipos que realizam compressão e descompressão em ficheiros, e tipos que permitem a comunicação através de tubos e portas em série.

Um ficheiro é uma coleção ordenada e nomeada de bytes que tem armazenamento persistente. Quando trabalha com ficheiros, trabalha com percursos de diretório, armazenamento de discos e nomes de ficheiros e diretórios. Em contraste, um fluxo é uma sequência de bytes que pode usar para ler e escrever para uma loja de apoio, que pode ser um dos vários meios de armazenamento (por exemplo, discos ou memória). Tal como existem várias lojas de suporte para além de discos, existem vários tipos de streams que não sejam streams de ficheiros, tais como correntes de rede, memória e tubos.

Ficheiros e diretórios

Pode utilizar os tipos no espaço de System.IO nomes para interagir com ficheiros e diretórios. Por exemplo, pode obter e definir propriedades para ficheiros e diretórios e obter coleções de ficheiros e diretórios com base nos critérios de pesquisa.

Para convenções de nomeação de caminhos e formas de expressar um caminho de ficheiro para sistemas de Windows, incluindo com a sintaxe do dispositivo DOS suportada em .NET Core 1.1 e posterior e posterior e .NET Framework 4.6.2 e posterior, consulte formatos de trajetória de arquivo em sistemas Windows.

Aqui estão algumas aulas de arquivo e diretório comumente usados:

  • File - fornece métodos estáticos para criar, copiar, eliminar, mover e abrir ficheiros, e ajuda a criar um FileStream objeto.

  • FileInfo - fornece métodos de exemplo para criar, copiar, eliminar, mover e abrir ficheiros, 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 criação, deslocação e enumeração através de diretórios e subdiretórios.

  • Path - fornece métodos e propriedades para o processamento de cordas de diretório de forma transversal.

Deve sempre fornecer um manuseamento de exceções robusto ao ligar para métodos de sistema de ficheiros. Para obter mais informações, consulte erros de I/O de manipulação.

Além de utilizar estas aulas, Visual Basic os utilizadores podem utilizar os métodos e propriedades fornecidos pela classe para o Microsoft.VisualBasic.FileIO.FileSystem ficheiro I/O.

Ver Como: Copiar Diretórios, Como: Criar uma Listagem de Diretórios e Como: Enumerar Diretórios e Ficheiros.

Fluxos

A classe Stream base abstrata suporta a leitura e a escrita bytes. Todas as classes que representam riachos herdam da Stream classe. A Stream classe e as suas classes derivadas proporcionam uma visão comum das fontes de dados e repositórios, e isolam o programador dos detalhes específicos do sistema operativo e dos dispositivos subjacentes.

Fluxos envolvem três operações fundamentais:

  • Reading - transferir dados de um fluxo para uma estrutura de dados, como uma variedade de bytes.

  • Escrita - transferência de dados para um fluxo de uma fonte de dados.

  • Procurar - consultar e modificar a posição atual dentro de um fluxo.

Dependendo da fonte de dados subjacente ou repositório, um fluxo pode suportar apenas algumas destas capacidades. Por exemplo, a PipeStream classe não suporta procurar. O CanRead, CanWritee CanSeek as propriedades de um fluxo especificam as operações que o fluxo suporta.

Aqui estão algumas classes de fluxo comumente usadas:

  • FileStream – para ler e escrever para um ficheiro.

  • IsolatedStorageFileStream – para ler e escrever a um ficheiro em armazenamento isolado.

  • MemoryStream – para ler e escrever para a memória como loja de apoio.

  • BufferedStream – para melhorar o desempenho das operações de leitura e escrita.

  • NetworkStream – para ler e escrever sobre 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 um exemplo de trabalhar com streams assíncronosamente, consulte Asynchronous File I/O.

Leitores e escritores

O System.IO espaço de nome também fornece tipos para ler caracteres codificados de streams e escrevê-los para streams. Tipicamente, os fluxos são projetados para entrada e saída byte. Os tipos de leitor e escritor lidam com a conversão dos caracteres codificados de e para bytes para que o fluxo possa completar a operação. Cada leitor e classe de escritor está associado a um fluxo, que pode ser recuperado através da propriedade da BaseStream classe.

Aqui estão algumas aulas de leitor e escritor comumente usados:

  • BinaryReader e BinaryWriter – para ler e escrever tipos de dados primitivos como valores binários.

  • StreamReader e StreamWriter – para ler e escrever caracteres utilizando um valor codificante para converter os caracteres de e para bytes.

  • StringReader e StringWriter – para ler e escrever personagens de e para as cordas.

  • TextReader e TextWriter – servir como as classes base abstratas para outros leitores e escritores que lêem e escrevem personagens e cordas, mas não dados binários.

Ver Como: Ler Texto de um Ficheiro, Como Escrever Texto para um Ficheiro, Como Ler Caracteres de uma Corda e Como: Escrever Caracteres para uma Corda.

Operações de E/S assíncronos

Ler ou escrever uma grande quantidade de dados pode ser intensivo em recursos. Deve executar estas tarefas de forma assíncronea se a sua aplicação precisar de permanecer sensível ao utilizador. Com operações de E/S sincronizadas, a linha UI está bloqueada até que a operação intensiva de recursos esteja concluída. Utilize operações de I/O assíncronas ao desenvolver aplicações Windows 8.x Loja para evitar criar a impressão de que a sua aplicação deixou de funcionar.

Os membros assíncronos contêm Async nos seus nomes, como os CopyToAsync, FlushAsynce ReadAsyncWriteAsync métodos. Usa estes métodos com as asyncawait palavras-chave.

Para mais informações, consulte o Ficheiro Assíncronos I/O.

Compressão

Compressão refere-se ao processo de redução do tamanho de um ficheiro para armazenamento. Descompressão é o processo de extração do conteúdo de um ficheiro comprimido para que estejam num formato utilizável. O System.IO.Compression espaço de nomes contém tipos para comprimir e descomprimir ficheiros e streams.

As seguintes classes são frequentemente utilizadas quando comprimem e descomprimem ficheiros e fluxos:

  • ZipArchive – para criar e recuperar entradas no arquivo zip.

  • ZipArchiveEntry – por representar um ficheiro comprimido.

  • ZipFile – para criar, extrair e abrir um pacote comprimido.

  • ZipFileExtensions – para criar e extrair entradas num pacote comprimido.

  • DeflateStream – para comprimir e descomprimir fluxos utilizando o algoritmo Deflate.

  • GZipStream – para comprimir e descomprimir fluxos no formato de dados gzip.

Ver Como: Comprimir e extrair ficheiros.

Armazenamento isolado

O armazenamento isolado é um mecanismo de armazenamento de dados que proporciona isolamento e segurança, definindo formas padronizadas de associar código a dados guardados. O armazenamento fornece um sistema de ficheiros virtual que é isolado pelo domínio do utilizador, montagem e (opcionalmente). O armazenamento isolado é particularmente útil quando a sua aplicação não tem permissão para aceder aos ficheiros dos utilizadores. Pode guardar configurações ou ficheiros para a sua aplicação de uma forma controlada pela política de segurança do computador.

O armazenamento isolado não está disponível para aplicações Windows 8.x Loja; em vez disso, utilize as classes de dados de aplicações no espaço de Windows.Storage nomes. Para mais informações, consulte os dados da Aplicação.

As seguintes classes são frequentemente utilizadas na implementação de armazenamento isolado:

Consulte Armazenamento isolados.

Operações de I/O em aplicativos Windows Store

.NET para aplicações Windows 8.x Loja contém muitos dos tipos de leitura e escrita para streams; no entanto, este conjunto não inclui todos os tipos de I/O .NET.

Algumas diferenças importantes a notar ao utilizar operações de E/S em aplicações Windows 8.x Loja:

Pode converter entre .NET Framework riachos e Windows Runtime correntes, se necessário. Para mais informações, consulte Como: Converter entre .NET Framework Fluxos e Windows Runtime Fluxos ou WindowsRuntimeStreamExtensions.

Para obter mais informações sobre as operações de E/S numa aplicação Windows 8.x Store, consulte Quickstart: Reading and writing files.

I/O e segurança

Quando utilizar as classes no espaço de nomes, deve seguir os requisitos de segurança do sistema operativo, tais como listas de controlo de acesso (ACLs) para controlar o System.IO acesso a ficheiros e diretórios. Este requisito é além de quaisquer FileIOPermission requisitos. Pode gerir acls programáticamente. Para mais informações, consulte Como: Adicionar ou remover Controlo de Acesso Lista de Entradas.

As políticas de segurança predefinidas impedem que as aplicações de Internet ou intranet acedam a ficheiros no computador do utilizador. Portanto, não utilize as aulas de E/S que requerem um caminho para um ficheiro físico ao escrever código que será descarregado através da internet ou intranet. Em vez disso, utilize armazenamento isolado para aplicações .NET.

Uma verificação de segurança só é efetuada quando o fluxo é construído. Portanto, não abra um fluxo e, em seguida, passe-o para domínios de código ou aplicação menos confiáveis.

  • Tarefas comuns de E/S
    Fornece uma lista de tarefas de E/S associadas a ficheiros, diretórios e streams, e ligações a conteúdos e exemplos relevantes para cada tarefa.

  • Arquivo Assíncronos I/O
    Descreve as vantagens de desempenho e o funcionamento básico da I/O assíncronea.

  • Armazenamento isolados
    Descreve um mecanismo de armazenamento de dados que proporciona isolamento e segurança definindo formas padronizadas de associar código a dados guardados.

  • Tubos
    Descreve operações de tubos anónimos e nomeados em .NET.

  • Ficheiros mapeados por memória
    Descreve ficheiros mapeados pela memória, que contêm o conteúdo de ficheiros em disco na memória virtual. Pode utilizar ficheiros mapeados para editar ficheiros muito grandes e criar memória partilhada para comunicação interprocessada.