Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde a todos, estou precisando de uma ajuda em um aplicativo que estou fazendo, ele filtra o nome dos arquivos e cria pastas na sequencia, o que me resta pra finaliza-lo é jogar os arquivos dentro das pastas correspondentes.
1º Esse primeiro script pega a pasta de origem e destino, lista em uma ListBox e cria as pastas.
//Marca o diretório a ser listado
DirectoryInfo diretorio = new DirectoryInfo(txtEntrada.Text);
//Executa função GetFile(Lista os arquivos desejados de acordo com o parametro)
FileInfo[] Arquivos = diretorio.GetFiles("*.*");
//Começamos a listar os arquivos
foreach (FileInfo fileinfo in Arquivos)
{
lstXML.Items.Add(fileinfo.Name);
}
MessageBox.Show("Pastas criadas com sucesso!");
foreach (string Items in lstXML.Items)
{
string arquivo = Items;
string ano = Items.Substring(2, 2);
string mes = Items.Substring(4, 2);
string cnpj = Items.Substring(6, 14);
txtCNPJ.Text = cnpj;
txtAno.Text = ano;
txtMes.Text = mes;
// Especifica o local da pasta"
string activeDir = (txtSaida.Text);
//cria uma nova subpasta
string newPath = System.IO.Path.Combine(activeDir, txtCNPJ.Text);
// comando que cria a subpasta
System.IO.Directory.CreateDirectory(newPath);
//cria uma nova subpasta
string Path1 = System.IO.Path.Combine(newPath, txtAno.Text);
// comando que cria a subpasta
System.IO.Directory.CreateDirectory(Path1);
//cria a segunda subpasta
Path2 = System.IO.Path.Combine(Path1, txtMes.Text);
// Comando que cria a segunda subpasta
System.IO.Directory.CreateDirectory(Path2);
}
2º Estou utilizando esse método pra copiar os arquivos para um diretório especifico
private void btnCopiar_Click(object sender, EventArgs e)
{
DirectoryInfo pastaOrigem;
DirectoryInfo pastaDestino;
//valida se as caixas foram preenchidas
if (txtEntrada.Text == "" || txtSaida.Text == "")
{
MessageBox.Show("Selecione o pasta de origem e pasta de destino", "Erro");
}
else
{
//verifica se os diretórios são válidos
pastaOrigem = new DirectoryInfo(txtEntrada.Text);
pastaDestino = new DirectoryInfo(txtSaida.Text);
if (!pastaOrigem.Exists)
{
MessageBox.Show("Pasta de origem informada não existe", "Erro");
}
else
{
//tudo a partir de agora é feito dentro de um try...catch
try
{
//verifica se a pasta destino é "raiz"
if (pastaDestino.Root.Name == pastaDestino.Name)
{
MessageBox.Show("A pasta destino não pode ser uma pasta raiz", "Erro");
}
else
{
//verifica se a pasta "pai" da pasta destino existe
if (!pastaDestino.Parent.Exists)
{
MessageBox.Show("O caminho para a pasta destino não existe", "Erro");
}
else
{
//chama a função que copiará a pasta origem para a pasta destino
CopiaPasta(pastaOrigem.FullName, pastaDestino.FullName);
MessageBox.Show("Pasta copiada com sucesso!", "Aviso");
}
3ºESSE É O MÉTODO CopiaPasta :
void CopiaPasta(string Origem, string Destino)
{
DirectoryInfo pOrigem, pDestino;
pOrigem =new DirectoryInfo(Origem);
pDestino =new DirectoryInfo(Destino);
try
{
//cria o diretório de destino se ele não existir
if(!pDestino.Exists)
{
pDestino.Create();
}
//para cada arquivo na pasta origem copia esse arquivo para a pasta destino
foreach(FileInfo arquivo in pOrigem.GetFiles())
{
arquivo.CopyTo(Path.Combine(pDestino.FullName, arquivo.Name));
}
//para cada pasta na pasta origem copia essa pasta para a pasta destino
foreach(DirectoryInfo pasta in pOrigem.GetDirectories())
{
string strNomeDestino = Path.Combine(pDestino.FullName, pasta.Name);
//chama a função recursivamente
CopiaPasta(pasta.FullName, strNomeDestino);
}
}
catch(Exception objExcessao)
{
MessageBox.Show(objExcessao.Message,"Erro");
}
}
POR FIM , agradeceria muito se alguém me desce uma luz para que no 1º Método no btnExportar, quando ele verifica, filtra e cria a pasta já jogar o arquivo lá dentro da ultima subpasta.
OBS: O arquivo seria correspondente as pastas, acredito que teria que criar um filtro tambem pro arquivo.
Carregando comentários...