English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
A classe FileInfo oferece funcionalidades semelhantes à classe File estática, mas você pode controlar a leitura e escrita do arquivo manualmente, escrevendo código para ler ou escrever bytes do arquivo./Operações de escrita com mais controle.
Atributos | Uso |
---|---|
Directory | Obtenha a instância do diretório pai. |
DirectoryName | Obtenha a string que representa o caminho completo do diretório. |
Exists | Obtenha um valor que indica se o arquivo existe. |
Extension | Obtenha a string que representa a parte de extensão do arquivo. |
FullName | Obtenha o caminho completo do diretório ou arquivo. |
IsReadOnly | Obtenha ou defina um valor que determina se o arquivo atual é apenas leitura. |
LastAccessTime | Obtenha ou defina o tempo da última acesso no arquivo ou diretório atual. |
LastWriteTime | Obtenha ou defina o tempo da última escrita no arquivo ou diretório atual. |
Length | Obtenha o tamanho atual do arquivo (em bytes). |
Name | Obtenha o nome do arquivo. |
Método | Uso |
---|---|
AppendText | Crie um StreamWriter para anexar texto ao arquivo representado por esta instância de FileInfo. |
CopyTo | Copie o arquivo existente para um novo arquivo, sem permitir a sobrescrita do arquivo existente. |
Create | Crie um arquivo. |
CreateText | Crie um StreamWriter para escrever em um novo arquivo de texto. |
Decrypt | Descriptografe o arquivo criptografado pelo método Encrypt da conta atual. |
Delete | Exclua o arquivo especificado. |
Encrypt | Cryptografe o arquivo para que apenas a conta usada para criptografar o arquivo possa descriptografá-lo. |
GetAccessControl | Obtenha um objeto FileSecurity, que encapsula as entradas da lista de controle de acesso (ACL) do arquivo especificado. |
MoveTo | Mova o arquivo especificado para uma nova posição, fornecendo a opção de nome do novo arquivo. |
Open | Abra um com o FileMode especificado. |
OpenRead | Crie um FileStream exclusivo para leitura. |
OpenText | Crie um com UTF8StreamReader codificado, o codec pode ler arquivos de texto existentes. |
OpenWrite | Crie um FileStream exclusivo para escrita. |
Replace | Substitua o conteúdo do arquivo especificado com o objeto FileInfo atual, exclua o arquivo original e crie uma cópia de segurança do arquivo substituído. |
ToString | Para retornar o caminho como string. |
O exemplo a seguir mostra como ler manualmente bytes de um arquivo e, em seguida, usar UTF8A codificação as converte em strings:
Exemplo: usar a classe FileInfo para ler arquivo
//Criar objeto FileInfo para caminho especificado FileInfo fi = new FileInfo(@"D:\DummyFile.txt"); //Abrir arquivo para leitura/escrita FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); //Criar um array de bytes com o mesmo tamanho do FileStream byte[] fileBytes = new byte[fs.Length]; //Definir o contador para verificar quantos bytes precisam ser lidos. Diminuir o contador a cada byte lido int numBytesToRead = (int)fileBytes.Length; //O contador indica o número de bytes lidos int numBytesRead = 0; //Iterar até ler todos os bytes do FileStream while (numBytesToRead > 0) { int n = fs.Read(fileBytes, numBytesRead, numBytesToRead); if (n == 0) break; numBytesRead += n; numBytesToRead -= n; } //Após ler todos os bytes do FileStream, você pode usar UTF8Codificação convertendo para string string filestring = Encoding.UTF8.GetString(fileBytes);
Como mostrado no código acima, você precisa escrever muitos códigos para ler do FileSream/Escrever strings. No entanto, usar StreamReader e StreamWriter permite fazer a mesma leitura com facilidade/Operação de escrita.
O exemplo a seguir mostra como o StreamReader facilita a leitura de strings a partir de um arquivo:
Exemplo: usar StreamReader para ler arquivo
//Criar objeto FileInfo para caminho especificado FileInfo fi = new FileInfo(@"D:\DummyFile.txt"); //Abrir arquivo para leitura/escrita FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read); //Criar um objeto StreamReader passando o objeto FileStream que deve ser operado StreamReader sr = new StreamReader(fs); //Usar o método ReadToEnd para ler todo o conteúdo do arquivo string fileContent = sr.ReadToEnd(); //Fechar o objeto StreamReader após a operação sr.Close(); fs.Close();
Atenção, fi.Open() possui três parâmetros:
O primeiro parâmetro é FileMode, usado para criar e abrir arquivo (se o arquivo não existir);
O segundo parâmetro FileAccess representa operação de leitura;
O terceiro parâmetro é para compartilhar o arquivo com outros usuários para leitura ao abrir o arquivo.
O exemplo a seguir mostra como o StreamWriter facilita a escrita de strings no arquivo:
Exemplo: Usar StreamWriter para escrever texto no arquivo
//Criar objeto FileInfo para caminho especificado FileInfo fi = new FileInfo(@"D:\DummyFile.txt"); //Abrir arquivo para leitura/escrita FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read); //Criar objeto StreamWriter para escrever strings no FileStream StreamWriter sw = new StreamWriter(fs); sw.WriteLine("Outra linha da streamwriter"); sw.Close();
Não é possível executar leitura e escrita simultaneamente no mesmo objeto FileStream. Se você já estiver lendo o arquivo, crie um objeto FileStream separado para escrever no mesmo arquivo, conforme mostrado a seguir:
Exemplo: StreamReader e StreamWriter
//Criar objeto FileInfo para DummyFile.txt FileInfo fi = new FileInfo(@"D:\DummyFile.txt"); //Abrir DummyFile.txt para operação de leitura FileStream fsToRead = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); //Abrir DummyFile.txt para operação de escrita FileStream fsToWrite = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); //Obter StreamReader StreamReader sr = new StreamReader(fsToRead); //Usar o objeto StreamReader para ler todo o texto string fileContent = sr.ReadToEnd(); sr.Close(); //Obter StreamWriter StreamWriter sw = new StreamWriter(fsToWrite); //Escrever alguns textos com StreamWriter sw.WriteLine("Outra linha da streamwriter"); sw.Close(); //Fechar todos os objetos Stream fsToRead.Close(); fsToWrite.Close();
Portanto, você pode usar as classes FileInfo, StreamReader e StreamWriter para ler arquivos físicos/Escrever Conteúdo.