English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

FileInfo do C#

 Aqui, você aprenderá a usar a classe FileInfo para executar leituras no arquivo físico./Operação de escrita.

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.

Propriedades e métodos importantes do FileInfo:

AtributosUso
DirectoryObtenha a instância do diretório pai.
DirectoryNameObtenha a string que representa o caminho completo do diretório.
ExistsObtenha um valor que indica se o arquivo existe.
ExtensionObtenha a string que representa a parte de extensão do arquivo.
FullNameObtenha o caminho completo do diretório ou arquivo.
IsReadOnlyObtenha ou defina um valor que determina se o arquivo atual é apenas leitura.
LastAccessTimeObtenha ou defina o tempo da última acesso no arquivo ou diretório atual.
LastWriteTimeObtenha ou defina o tempo da última escrita no arquivo ou diretório atual.
LengthObtenha o tamanho atual do arquivo (em bytes).
NameObtenha o nome do arquivo.
MétodoUso
AppendTextCrie um StreamWriter para anexar texto ao arquivo representado por esta instância de FileInfo.
CopyToCopie o arquivo existente para um novo arquivo, sem permitir a sobrescrita do arquivo existente.
CreateCrie um arquivo.
CreateTextCrie um StreamWriter para escrever em um novo arquivo de texto.
DecryptDescriptografe o arquivo criptografado pelo método Encrypt da conta atual.
DeleteExclua o arquivo especificado.
EncryptCryptografe o arquivo para que apenas a conta usada para criptografar o arquivo possa descriptografá-lo.
GetAccessControlObtenha um objeto FileSecurity, que encapsula as entradas da lista de controle de acesso (ACL) do arquivo especificado.
MoveToMova o arquivo especificado para uma nova posição, fornecendo a opção de nome do novo arquivo.
OpenAbra um com o FileMode especificado.
OpenReadCrie um FileStream exclusivo para leitura.
OpenTextCrie um com UTF8StreamReader codificado, o codec pode ler arquivos de texto existentes.
OpenWriteCrie um FileStream exclusivo para escrita.
ReplaceSubstitua 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.
ToStringPara 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.