void CopiarArquivosPorPastaLocal(DirectoryInfo pOrigem, string pPastaOrigem, string pPastaDestino, TDEPARA pDePara) { try { FileInfo[] Files = pOrigem.GetFiles("*", SearchOption.TopDirectoryOnly); Log.RegistrarLogInformacao("Foram encontrados " + Files.Count() + " arquivos para copiar"); foreach (FileInfo File in Files) { pPastaOrigem = pPastaOrigem.EndsWith("\\") ? pPastaOrigem : pPastaOrigem + "\\"; pPastaDestino = pPastaDestino.EndsWith("\\") ? pPastaDestino : pPastaDestino + "\\"; string arquivoDe = pPastaOrigem + File.Name; string arquivoPara = pPastaDestino + File.Name; //Somente transfere arquivos maiores que 0 byte if (File.Length > 0) { //Realiza cópia do arquivo Log.RegistrarLogInformacao("Copiando arquivo para pastas: " + pPastaDestino + File.Name); System.IO.File.Copy(pPastaOrigem + File.Name, pPastaDestino + File.Name, true); //Verifica se os arquivos de origem e destido são iguais FileInfo FileInfoPara = new FileInfo(pPastaDestino + File.Name); if (File.Length == FileInfoPara.Length) { //Apaga arquivo de origem if (pDePara.ABOL_EXCLUIR_ORIGEM == true) { Log.RegistrarLogInformacao("Apagando arquivo: " + pPastaOrigem + File.Name); System.IO.File.Delete(arquivoDe); Log.RegistrarLogInformacao("Arquivo apagado : " + pPastaOrigem + File.Name); } } else { Log.RegistrarLogErro("Arquivo de origem é diferente de arquivo de destino"); Log.RegistrarLogInformacao("Apagando arquivo copiado para o destino"); System.IO.File.Delete(arquivoPara); Log.RegistrarLogInformacao("Arquivo copiado para o destino foi apagado"); } } else { //caso o arquivo com 0KB esteja a mais do tempo configurado no config ele apaga o arquivo DateTime dtUltimaModificacaoArquivo = File.LastWriteTime; ArquivoDomain.ApagarArquivoVazio(File.FullName, dtUltimaModificacaoArquivo); Log.RegistrarLogInformacao("Arquivo " + File.FullName + " com 0 byte não será copiado"); } } } catch (Exception ex) { } }
void CopiarArquivosFTP(TDEPARA pDePara) { if (pDePara.ATXT_SERVIDOR_ORIGEM != null && pDePara.ATXT_SERVIDOR_DESTINO != null) { //Caso ORIGEM e DESTINO sejam FTP primeiro faz o download do arquivo e depois sobe para o DESTINO } else if (pDePara.ATXT_SERVIDOR_ORIGEM != null && pDePara.ATXT_SERVIDOR_DESTINO == null) { //SOMENTE ORIGEM é um FTP então faz o download direto para a pasta de destino try { Log.RegistrarLogInformacao("Origem é um FTP, ira ser feito o download do arquivo"); foreach (string item in GetListaArquivosFTP(pDePara, EnumTipoCredencial.De)) { DownloadArquivoFTP(item, pDePara); } } catch (Exception ex) { Log.RegistrarLogErro("OCORREU UM ERRO AO COPIAR OS ARQUIVOS PARA FTP"); Log.RegistrarLogErro(ex.ToString()); } } else if (pDePara.ATXT_SERVIDOR_ORIGEM == null && pDePara.ATXT_SERVIDOR_DESTINO != null) { //SOMENTE O DESTINO é um servidor ftp então, faz o UPLOAD de pasta física direto para a pasta no servidor FTP try { Log.RegistrarLogInformacao("Destino é um FTP, ira ser feito o upload do arquivo"); DirectoryInfo Dir = new DirectoryInfo(pDePara.ANOM_ORIGEM); //Busca automaticamente todos os arquivos em todos os subdiretórios FileInfo[] Files = Dir.GetFiles("*", SearchOption.AllDirectories); Log.RegistrarLogInformacao("Foram encontrados " + Files.Count() + " arquivos"); if (Files.Count() <= 0) { Log.RegistrarLogInformacao("A pasta " + pDePara.ANOM_ORIGEM + " não contém arquivos"); } foreach (FileInfo File in Files) { Log.RegistrarLogInformacao("Copiando arquivo " + File.Name); //Somente transfere arquivos maiores que 0 byte if (File.Length > 0) { UploadArquivoFtp(File.Name, pDePara); //FileTransferBusiness.TransferirArquivo(item.ANOM_DE, item.ANOM_PARA, File); } else { //caso o arquivo com 0KB esteja a mais do tempo configurado no config ele apaga o arquivo DateTime dtUltimaModificacaoArquivo = File.LastWriteTime; ArquivoDomain.ApagarArquivoVazio(File.FullName, dtUltimaModificacaoArquivo); Log.RegistrarLogInformacao("Arquivo " + File.FullName + " com 0 byte não será copiado"); } } } catch (Exception ex) { Log.RegistrarLogErro("OCORREU UM ERRO AO COPIAR OS ARQUIVOS PARA FTP"); Log.RegistrarLogErro(ex.ToString()); } } }