Java - Фильтр перед копированием файла с одного сервера на другой - PullRequest
0 голосов
/ 07 ноября 2018

Мне нужен совет о том, как лучше всего скопировать файл с одного сервера на другой с помощью Java-программирования. Моя программа будет копировать файл только в том случае, если имя файла не существует в таблице БД. Прямо сейчас моя программа будет сравнивать по одному из удаленного пути с данными в таблице. Это займет много времени, если есть много файлов для сравнения. Итак, каков наилучший метод или способ сделать это правильно, не занимая много времени?

Пример моего кода:

>        if(remoteFile.length > 0){
>             for(int i = 0;i < remoteFile.length;i++){
>                 fileNm = remoteFile[i].getName();
>                 checktable();
>                 if(checktable.getNumberOfRows()==0){
>                     ftp.copyFileFrom("/"+fileNm , filePath);
>                     inserttable();
>                 }
>             }
>         }

1 Ответ

0 голосов
/ 07 ноября 2018

Вы можете использовать jsch для подключения к удаленному пути.

JSch jsch = new JSch();
        Session sshSession = jsch.getSession(username, host, port);
        sshSession.setPassword(passwd);
        Properties config = new Properties();
        config.put("StrictHostKeyChecking", "no");
        sshSession.setConfig(config);
        sshSession.connect();

Открыть новый канал SFTP, получить доступ к вашему пути и вывести список файлов, используя расширение filer (например: * .csv)

     ChannelSftp sftpChannel = (ChannelSftp) sshSession.openChannel("sftp");
            sftpChannel.connect();
            sftpChannel.cd(path);
      Vector<LsEntry> fileList = sftpChannel.ls("*.csv");

Затем вы можете сравнить свой список файлов с данными таблицы перед копированием в вашу цель.

...