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.








