Dev (Back & Front)ARTIGO

Trabalhando com diretórios e arquivos

Olá,
pessoal! Hoje gostaria de mostrar e falar como trabalhar com diretório no
Windows Form, usando a linguagem C#.NET. A ideia no geral é pegar um caminho
específico, buscar todos os diretórios e os arquivos destes diretórios
listados.

Usado: Visual Studio .NET 2010, C#.NET, Windows Form.

Foram utilizadas as
classes System.Text; System.Windows.Forms
e System.IO, para o devido funcionamento da aplicação.

O
primeiro passo é definir o primeiro diretório, ou seja, o diretório principal
no qual podem existir outros diretórios e arquivos. Foi criado um aplicativo do tipo Windows Form
como exemplo:

Dentro
do Form1.cs adicionei a variável
chamada caminho:

string caminho = @"C:TempPastaPrincipal";

Note
que, no final do valor, a variável possui a barra indicando ao código que é um
diretório. Dentro do form_load do aplicativo, comecei a
escrever o restante do código. Como é um programa teste, procurei não utilizar
camadas, mas recomendo que utilize no caso de uma aplicação mais robusta.

Veja as
primeiras linhas do form_load:

private void Form1_Load(object sender, EventArgs e)

{

try

{

FileInfo TheFile = new FileInfo(caminho);

DirectoryInfo info = TheFile.Directory;

A
primeira linha é onde utilizo FileInfo,
pego o caminho em formato específico dentro do código e armazeno na variável TheFile. Na segunda linha, eu pego o
diretório utilizando o DirectoryInfo:

DirectoryInfo info = TheFile.Directory;

A
variável info do tipo DirectoryInfo possui todas as pastas
necessárias ou diretórios do caminho indicado. Para pegar mais de um diretório,
basta fazer um foreach:

foreach (var _directory in info.GetDirectories())

Note
que foi feito o foreach pegando todos
os diretórios do caminho principal. O valor da variável foi armazenado dentro
do _directory. Dependendo da sua
necessidade, você pode acrescentar mais funcionalidades sem qualquer problema.

O passo
seguinte é simples, basta pegar todos os arquivos dentro da pasta e fazer um
novo foreach:

foreach (var _directory in info.GetDirectories())

{

//pega a lista de arquivos

FileInfo[] NextFile = _directory.GetFiles("*.txt");



foreach (var _file in NextFile)

{

//pega o nome do arquivo

string _nomeArquivo = _file.Name.ToString();

}

}

Note que o código anterior mostra
que existe um for dentro de outro. Um
é para pegar todos os diretórios, outro para pegar todos os arquivos .txt. Lembro
que pode ser qualquer outro tipo de arquivo, como xml, jpg e outros mais. Dentro
do for do arquivo, deixei um exemplo no qual
armazeno o nome do arquivo em uma variável.

Deixo
outras dicas de como usar try, catch, verificar linha a linha o que foi feito e se
possível usar o debug da ferramenta. Essa
funcionalidade pode ser usada para copiar dados do arquivo, renomear, apagar e
muito mais.

Espero
que tenha gostado e qualquer dúvida pode entrar em contato.

Com mais de 20 anos trabalhando no mercado de tecnologia. Mestre em Engenharia Elétrica voltada para o mundo mobile, com mais de 20 livros publicados e cerca de 700 artigos publicados com intuito de ajudar àqueles que querem aprender a programar (site, software, desktop, serviços, api e mobile). Site pessoal: https://www.mauriciojunior.net - MVP, MCAD, MCP Microsoft

Ver perfil