예제 #1
0
        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)
            {
            }
        }
예제 #2
0
        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());
                }

            }
        }