JSCH を使用して SFTP サーバーからファイルをダウンロードしています。SFTPにあるさまざまなフォルダーからファイルをダウンロードするために複数のチャネルを使用して、単一のセッションを使用しています。このダウンロード プロセスのために、一連のスケジュールされたジョブがあります。各ジョブは次のようになります。
ChannelSftp
毎回新しいチャンネル ( ) を開きます。チャンネル名:sftp- メソッド
ChannelSftp.ls()
を使用して、ダウンロードするファイルの総数のサイズを取得します - size(Vector) がゼロより大きい場合、
ChannelSftp.get(remotedir/'*.*', localdir)
すべてのファイルをダウンロードするために使用します - 最後に開いたチャネルを閉じます。
上記のプロセス中に、ほとんどの場合、File Not Found または No such File Exceptions が発生し、一部のファイルがダウンロードされません。
なぜそれが起こるのか誰か教えてください。何が原因である可能性があります。この問題を解決する方法
以下は私が使用しているコードです:
ChannelSftp channelSftp = null;
try {
channelSftp = getChannelConnectionUtil().openChannel(); //SFTPConnection.getSession().openChannel("sftp");
@SuppressWarnings("rawtypes")
Vector numOfFiles = channelSftp.ls(ftpDir+"/*.*");
if(numOfFiles.size() > 0){
channelSftp.get(ftpDir+"/*.*",localDir); // Here I am getting error
}
} catch (Exception e) {
e.printStackTrace();
} finally {
getChannelConnectionUtil().disconnectChannel(channelSftp);
}