Início > .NET Framework > Sistemas de Arquivo no .NET

Sistemas de Arquivo no .NET

O .Net Framework tem classes que nos permitem criar, deletar, navegar, e etc.. arquivos e pastas do Windows. Podemos até criar um Windows Explorer Genérico com todas essas funcionalidades e outras mais.

Todas essas features ficam dentro do namespace System.IO. Abaixo explicarei algumas das possiblidades que o .Net disponibiliza para manipulação de sistema de arquivos.

Manipulando Drives

A classe DriveInfo representa um drive (ex: C:\, CDROM, USB, etc.). Para instanciá-la a partir de um drive existente basta você passar o nome do drive no construtor padrão da classe.

DriveInfo drive = new DriveInfo(@"C:\");

Dentro do objeto drive que instanciamos no exemplo anterior temos alguns métodos e propriedades interessantes para ser usadas.  Segue abaixo alguns exemplos:

drive.Name; //Retorna o nome do Drive
drive.AvailableFreeSpace; //Total de espaço disponível
drive.DriveFormat; //Se ele é NTFS ou FAT
drive.DriveType; //Se ele é CDROM, HD, USB e etc..
drive.TotalSize; //Tamanho total

Para retornar todos os drives do computador utilize o seguinte exemplo:

foreach (DriveInfo drive in DriveInfo.GetDrives())
{
      Console.WriteLine(drive.Name);
}

Pastas ou Diretórios

De modo semelhante aos drives, você pode utilizar a classe DirectoryInfo para manipular pastas ou diretórios. Para instanciar utilize:

DirectoryInfo diretorio = new DirectoryInfo(@"C:\"); ou  DirectoryInfo diretorio = new DirectoryInfo(@"C:\MinhaPasta");

Segue abaixo alguns métodos e propriedades úteis:

diretorio.Name; //Retorna o nome da Pasta
diretorio.CreationTime.ToShortDateString(); //Data de criação
diretorio.Exists; //Verifica se o diretório existe fisicamente
diretorio.FullName; //Path completo
diretorio.Create();//Cria o diretório fisicamente
diretorio.Delete();//Apaga o diretório
diretorio.MoveTo(@"C:\NovoDiretorio\"); //Move o diretório para outro path

Para retornar todos os sub-diretórios do objeto diretório utilize:

foreach (DirectoryInfo subdiretorio in diretorio.GetDirectories())
{
      Console.WriteLine(subdiretorio.Name);
}

Para retornar os arquivos de sistema:

foreach (FileSystemInfo arquivoSistema in diretorio.GetFileSystemInfos())
{
      Console.WriteLine(arquivoSistema.Name);
}

E para retornar todos os arquivos:

foreach (FileInfo arquivo in diretorio.GetFiles())
{
     Console.WriteLine(arquivo.Name);
}

Pastas ou Diretórios 2

Existe também a classe Diretory, que trabalha de forma estática e de modo muito semelhante a classe DirectoryInfo. Segue abaixo algumas métodos úteis da classe directory para você obter informações.

Console.WriteLine(Directory.Exists(@"C:\Teste")); //Verifica se o diretório existe fisicamente
Console.WriteLine(Directory.GetCreationTime(@"C:\Teste")); //Retorna a data de criação do diretório
Console.WriteLine(Directory.GetCurrentDirectory()); //Retorna o diretório atual da aplicação

Para manipulação, a classe contem os seguintes métodos.

Directory.CreateDirectory(@"C:\Teste"); //Cria um diretório
Directory.Move(@"C:\Teste", @"C:\Teste2"); //Move o diretório
Directory.Delete(@"C:\Teste2"); //Delete a o diretório

Com a classe Directory você pode retornar um array de strings contendo todos os arquivos ou diretórios contido dentro de um path.

//Retorna todos os diretórios
foreach (string diretorio in Directory.GetDirectories(@"C:\"))
{
       Console.WriteLine(diretorio);
}
//Retorna todos os arquivos
foreach (string arquivo in Directory.GetFiles(@"C:\"))
{
       Console.WriteLine(arquivo);
}

Arquivos

Para manipular arquivos é da mesma forma, porem utilizando a classe FileInfo:

FileInfo arquivo = new FileInfo("teste.txt");    //Por Default a pasta padrão é ~\bin\debug
FileInfo arquivo = new FileInfo(@"C:\teste.txt");  //O construtor também aceita o path completo

Segue abaixo alguns métodos úteis:

Console.WriteLine(arquivo.Name); //Retorna o nome da Pasta
Console.WriteLine(arquivo.CreationTime.ToShortDateString()); //Data de criação
Console.WriteLine(arquivo.Exists); //Verifica se o diretório existe fisicamente
Console.WriteLine(arquivo.FullName); //Path completo

Também é possível manipular o arquivo dentro do FileInfo

arquivo.Create(); //Cria um arquivo físico baseado no FileInfo
arquivo.CreateText(); //Cria um StreamWriter e um novo arquivo para ser escrito
arquivo.CopyTo(@"c:\teste2.txt"); // Cria uma cópia do arquivo físico
arquivo.MoveTo(@"c:\teste2.txt"); // Move o arquivo físico para um novo arquivo
arquivo.Delete(); // Deleta o arquivo físico

Arquivos2

Outra forma de você manipular arquivos é utilizando a classe File. Ela tem funcionalidade muito semelhantes a classe FileInfo, porém trabalha de forma estática, ou seja, sem precisar instanciar o objeto.

File.Create(@"C:\teste.txt"); //Cria um arquivo físico
File.CreateText(@"C:\teste.txt"); //Cria um StreamWriter e um novo arquivo para ser escrito
File.Copy(@"C:\teste.txt", @"C:\teste2.txt"); // Cria uma cópia do arquivo físico
File.Move(@"C:\teste.txt", @"C:\teste3.txt"); // Move o arquivo físico para um novo arquivo
File.Delete(@"C:\teste3.txt"); //Deleta o arquivo físico
Console.WriteLine(File.Exists(@"C:\teste2.txt")); //Verifica se o arquivo existe fisicamente

E por enquanto é isso pessoal. Escreverei mais sobre sistemas de arquivo no .Net no meu próximo post.

Categorias:.NET Framework
  1. Ainda sem comentários.
  1. No trackbacks yet.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google photo

Está a comentar usando a sua conta Google Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s

%d bloggers like this: