Noções básicas de E/S de arquivo do .NET Framework e o sistema de arquivos (Visual Basic)
As classes no namespace System.IO são usadas para trabalhar com unidades, arquivos e diretórios.
O namespace System.IO contém as classes File e Directory, que fornecem a funcionalidade do .NET Framework que manipula arquivos e diretórios. Como os métodos desses objetos são estáticos ou membros compartilhados, você pode usá-los diretamente sem antes criar uma instância da classe. Associadas a essas classes estão as classes FileInfo e DirectoryInfo, conhecidas pelos usuários do recurso My
. Para usar essas classes, você deve qualificar totalmente os nomes ou importar os namespaces apropriados, incluindo as declarações Imports
no início do código afetado. Para obter mais informações, consulte Instrução Imports (tipo e namespace .NET).
Observação
Os outros tópicos nesta seção usam o objeto My.Computer.FileSystem
, em vez das classes System.IO
, para trabalhar com unidades, arquivos e diretórios. O objeto My.Computer.FileSystem
destina-se principalmente a ser usado em programas do Visual Basic. As classes System.IO
destinam-se a serem usadas por qualquer linguagem compatível com o .NET Framework, incluindo o Visual Basic.
Definição de um fluxo
O .NET Framework usa fluxos para dar suporte à leitura e gravação em arquivos. Você pode pensar em um fluxo como um conjunto unidimensional de dados contíguos, que tem um início e um fim e um local em que o cursor indica a posição atual no fluxo.
Operações de fluxo
Os dados contidos no fluxo podem vir da memória, de um arquivo ou de um soquete TCP/IP. Os fluxos têm operações fundamentais que podem ser aplicadas a eles:
Leitura. Você pode ler em um fluxo, transferindo dados do fluxo para uma estrutura de dados, como uma cadeia de caracteres ou uma matriz de bytes.
Gravação. Você pode gravar em um fluxo, transferindo dados de uma fonte de dados para o fluxo.
Busca. Você pode consultar e modificar a sua posição no fluxo.
Para obter mais informações, consulte Compondo fluxos.
Tipos de fluxos
No .NET Framework, um fluxo é representado pela classe Stream, que forma a classe abstrata para todos os outros fluxos. Você não pode criar diretamente uma instância da classe Stream, mas deve usar uma das classes que ela implementa.
Há muitos tipos de fluxos, porém, com a finalidade de trabalhar com entrada/saída (E/S) de arquivos, os tipos mais importantes são a classe FileStream, que fornece uma maneira de ler e gravar arquivos, e a classe IsolatedStorageFileStream, que fornece uma maneira de criar arquivos e diretórios em armazenamento isolado. Outros fluxos que podem ser usados ao trabalhar com E/S de arquivo incluem:
A tabela a seguir lista as tarefas comumente realizadas com um fluxo:
Para | Consulte |
---|---|
Ler e gravar em um arquivo de dados | Como ler e gravar em um arquivo de dados recém-criado |
Ler texto de um arquivo | Como ler texto de um arquivo |
Gravar texto em um arquivo | Como gravar texto em um arquivo |
Ler caracteres de uma cadeia de caracteres | Como: Ler caracteres de uma cadeia de caracteres |
Gravar caracteres em uma cadeia de caracteres | Como: Gravar caracteres em uma cadeia de caracteres |
Criptografar dados | Criptografando dados |
Descriptografar dados | Descriptografando dados |
Acesso a arquivos e atributos
Você pode controlar como os arquivos são criados, abertos e compartilhados com as enumerações FileAccess, FileMode e FileShare, que contêm os sinalizadores usados pelos construtores da classe FileStream. Por exemplo, quando você abre ou cria uma nova FileStream, a enumeração FileMode permite especificar se o arquivo está aberto para acréscimos, se um novo arquivo será criado caso o arquivo especificado não exista, se o arquivo será substituído e assim por diante.
A enumeração FileAttributes habilita a coleta de informações específicas do arquivo. A enumeração FileAttributes retorna os atributos armazenados do arquivo, por exemplo, se ele é compactado, criptografado, oculto, somente leitura, um arquivo, um diretório, um arquivo de sistema ou um arquivo temporário.
A tabela a seguir lista as tarefas que envolvem o acesso a arquivos e atributos de arquivo:
Para | Consulte |
---|---|
Abrir e acrescentar texto a um arquivo de log | Como abrir e acrescentar a um arquivo de log |
Determinar os atributos de um arquivo | FileAttributes |
Permissões de arquivo
É possível controlar o acesso a arquivos e diretórios com a classe FileIOPermission. Isso pode ser especialmente importante para desenvolvedores que trabalham com Web Forms, que, por padrão, são executados no contexto de uma conta de usuário local especial denominada ASPNET, que é criada como parte das instalações do ASP.NET e do .NET Framework. Quando esse tipo de aplicativo solicita acesso a um recurso, a conta de usuário ASPNET tem permissões limitadas, que podem impedir que o usuário realize ações como gravar em um arquivo de um aplicativo Web. Para obter mais informações, consulte FileIOPermission.
Armazenamento isolado de arquivo
O armazenamento isolado é uma tentativa de resolver problemas criados ao trabalhar com arquivos em que o usuário ou código pode não ter as permissões necessárias. O armazenamento isolado atribui a cada usuário um compartimento de dados, que pode conter uma ou mais repositórios. Os repositórios podem ser isolados uns dos outros, por usuário e por assembly. Somente o usuário e o assembly que criou um repositório tem acesso a ele. Um repositório atua como um sistema de arquivos virtual completo. Você pode criar e manipular pastas e arquivos em um repositório.
A tabela a seguir lista as tarefas comumente associadas ao armazenamento isolado de arquivo.
Para | Consulte |
---|---|
Criar um repositório isolado | Como: Obter repositórios para o armazenamento isolado |
Enumerar repositórios isolados | Como: Enumerar repositórios para o armazenamento isolado |
Excluir um repositório isolado | Como: Excluir repositórios no armazenamento isolado |
Criar um arquivo ou diretório no armazenamento isolado | Como: Criar arquivos e diretórios no armazenamento isolado |
Localizar um arquivo no armazenamento isolado | Como: Localizar arquivos e diretórios existentes no armazenamento isolado |
Ler ou gravar em um arquivo no armazenamento isolado | Como: Ler e gravar em arquivos no armazenamento isolado |
Excluir um arquivo ou diretório no armazenamento isolado | Como: Excluir arquivos e diretórios no armazenamento isolado |
Eventos de arquivo
O componente FileSystemWatcher permite observar alterações em arquivos e diretórios em seu sistema ou em qualquer computador em que você tem acesso à rede. Por exemplo, se um arquivo é modificado, convém enviar a um usuário um alerta sobre a alteração ocorrida. Quando ocorrem alterações, um ou mais eventos são acionados, armazenados em um buffer e enviados ao componente FileSystemWatcher para processamento.