Compartilhar via


Arquivo básico de E/S

A classe base abstrata Stream suporta leitura e gravação de bytes. Stream integra suporte assíncrono. Suas implementações padrão definem leituras e gravações síncronas em termos de seus métodos assíncronos correspondentes e vice-versa.

Todas as classes que representam fluxos herdam da classe Stream. A classe Stream e suas classes derivadas fornecem uma visão genérica de fontes de dados e repositórios, isolando o programador de detalhes específicos do sistema operacional e dispositivos subjacentes.

Fluxos envolvem essas operações fundamentais:

  • Pode-se ler a partir de fluxos. Leitura é a transferência de dados de um fluxo em um estrutura de dados, como uma matriz de bytes.

  • Pode-se gravar em fluxos. Gravação é a transferência de dados de uma fonte de dados em um fluxo.

  • Fluxos podem suportar busca. Busca é a consulta e a modificação da posição atual em um fluxo.

Dependendo do repositório ou da fonte de dados, os fluxos podem suportar somente algumas dessas capacidades. Por exemplo, NetworkStreams não suportam busca. As propriedades CanRead, CanWrite, e CanSeek do Stream e suas classes derivadas determinam as operações que vários fluxos suportam.

Para obter uma lista de tarefas comuns de E/S, consulte Tarefas comuns de E/S.

Observação

Os usuários de Visual Basic podem optar por usar os métodos e propriedades fornecidas pelo Microsoft.VisualBasic.FileIO.FileSystem classe para arquivo de e/S.

Classes usadas para E/S de arquivos

Directory fornece métodos estáticos para criar, mover, e enumerar através de pastas e subpastas. A classe DirectoryInfo fornece métodos da instância.

DirectoryInfo fornece métodos de instância para criar, mover, e enumerar através de pastas e subpastas. A classe Directory oferece métodos estáticos.

DriveInfo fornece métodos da instância para acessar informações sobre uma unidade.

File fornece métodos estáticos para criar, copiar, excluir, mover, e abrir arquivos, e ajuda na criação de um FileStream. A classe FileInfo fornece métodos da instância.

FileInfo fornece métodos estáticos para criar, copiar, excluir, mover, e abrir arquivos, e ajuda na criação de um FileStream. A classe File oferece métodos estáticos.

FileStream suporta acesso aleatório aos arquivos por meio de seu método Seek. O FileStream abre arquivos de forma síncrona por padrão mas também suporta operação assíncrona. File contém métodos estáticos e FileInfo contém métodos da instância.

FileSystemInfo é o classe abstrata base para FileInfo e DirectoryInfo .

Path fornece métodos e propriedades para processamento sequências de caracteres de diretório de uma maneira de plataforma cruzada.

DeflateStream fornece métodos e propriedades para compactar e descompactar fluxos usando o algoritmo Deflate.

GZipStream fornece métodos e propriedades para compactar e descompactar fluxos. Por padrão, essa classe usa o mesmo algoritmo que a classe DeflateStream, mas pode ser estendida para usar outros formatos de compactação.

SerialPort fornece métodos e propriedades para controlar um recurso de arquivo de porta serial.

File, FileInfo , DriveInfo, Path, Directory, e DirectoryInfo são classes lacradas (em Microsoft Visual Basic, NotInheritable ). Você pode criar novas instâncias uma dessas classes, mas elas não podem ter classes derivadas.

Classes usadas para leitura e escrita de fluxos

BinaryReader e BinaryWriter leem e gravam sequências codificadas de caracteres e tipos primitivos de dados em fluxos .

StreamReader lê caracteres de fluxos , usando Encoding para converter caracteres de e para bytes. StreamReader tem um construtor que tenta verificar qual é a Codificação correta para um dadoFluxo, baseado na presença de um preâmbulo de codificação específica, como uma marca de pedido de byte.

StreamWriter grava caracteres em fluxos , usando codificação para converter caracteres em bytes.

StringReader lê caracteres de sequências de caracteres. StringReader permite que você trate sequências de caracteres com a mesma API, portanto, a saída pode ser um Stream em qualquer codificação ou uma sequência de caracteres.

StringWriter escreve caracteres em sequências de caracteres. StringReader permite que você trate sequências de caracteres com a mesma API, portanto, a saída pode ser tanto um Stream em qualquer codificação ou uma sequência de caracteres.

TextReader é o classe base abstrata para StreamReader e StringReader . Enquanto as implementações da classe abstrate Stream são cridas para entrada e saída de bytes, as implementações de TextReader são projetadas para saída de caractere Unicode.

TextWriter é a classe base abstrata para StreamWriter e StringWriter . Enquanto as implementações da classe abstrata Stream são cridas para entrada e saída de bytes, as implementações de TextReader são projetadas para saída de caracteres Unicode.

Classes comuns de E/S de fluxo

Um BufferedStream é um Stream que adiciona o buffer para outro fluxo como uma NetworkStream . (FileStream já tem o buffer internamente e um MemoryStream não precisa de armazenamento em buffer.) Um BufferedStream pode ser composto a partir de alguns tipos de fluxos para melhorar a performance de leitura e gravação. Um buffer é um bloco de bytes de memória usada para dados de cache, assim, reduzindo o número de chamadas para o sistema operacional.

Um CryptoStream liga os fluxos de dados a transformações de criptografia. Embora CryptoStream é derivado de fluxo , ele é não faz parte do namespace do System.IO, mas está no namespace System.Security.Cryptography.

Um MemoryStream é um fluxo sem buffer cujos dados encapsulados são acessados diretamente na memória. Este fluxo não tem armazenamento de backup e pode ser útil como um buffer temporário.

Um NetworkStream representa um fluxo sobre um conexão de rede. Embora CryptoStream é derivado de fluxo , ele é não faz parte do namespace do System.IO, mas está no namespace do System.Net.Sockets.

E/S e segurança

Quando usar as classes no namespace do System.IO, os requisitos de segurança do sistema operacional, como listas de controle de acesso (ACLs) devem ser satisfeitos para que o acesso seja permitido. Esse é um requisito adicional aos requisitos FileIOPermission.

Observação

ACLs podem ser gerenciadas por meio de programação.Para obter mais informações, consulte Como: Adicionar ou remover entradas de lista de controle de acesso e ACL Technology Overview.

Observação de cuidadoCuidado

Política padrão de segurança para a Internet e intranet não permite acesso aos arquivos.Portanto, não use as classes regular de E/S de armazenamento não isolado se você estiver escrevendo código que será baixado pela Internet.Use Armazenamento isolado em vez disso.

Observação de cuidadoCuidado

Quando um arquivo ou fluxo de rede é aberto, uma verificação de segurança é executada somente quando o fluxo é construído.Portanto, tenha cuidado ao lidar com esses fluxos de código menos-confiáveis ou domínios de aplicativos.

Consulte também

Tarefas

Como: Criar uma listagem de diretório

Como: Ler e gravar em um arquivo de dados recém-criado

Como: Abrir e anexar um arquivo de Log

Como: Ler texto de um arquivo.

Como: Gravar texto em um arquivo

Como: Caracteres de leitura de uma seqüência

Como: Gravar uma seqüência de caracteres

Conceitos

Tarefas comuns de E/S