【发布时间】:2020-07-28 15:16:41
【问题描述】:
我正在尝试从 SFTP 服务器上的文件夹中下载所有文件,以下是我的代码请提出更改建议,以便我可以从远程目录下载所有可用文件并保存到本地目录
package svb.ftp.bs.load;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.SftpException;
import java.io.FileNotFoundException;
import java.io.File;
import java.io.FileInputStream;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import java.io.InputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.List;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Vector;
public class downloadFtp {
public static void main(String[] args) {
String SFTPHOST = "host";
int SFTPPORT = 22;
String SFTPUSER = "user";
String SFTPPASS = "Pass";
String privateKey = "E:\\Oracle\\mywork\\DownloadFTP\\ppk.ppk";
String SFTPWORKINGDIR = "Inbox/ARR_SI_MedicalTranscriptionBillCorp_PD_20200724_32137.TXT";
com.jcraft.jsch.Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
JSch jsch = new JSch();
try {
jsch.addIdentity(privateKey);
session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT);
session.setPassword(SFTPPASS);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
System.out.println("Connected");
channelSftp = (ChannelSftp) channel;
channelSftp.cd(SFTPWORKINGDIR);
InputStream is = channelSftp.get(SFTPWORKINGDIR);
IOUtils.copy(is, System.out);
is.close();
System.out.println("File Uploaded to FTP Server Sucessfully.");
} catch (JSchException jse) {
// TODO: Add catch code
jse.printStackTrace();
} catch (SftpException se) {
// TODO: Add catch code
se.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
目前,当我运行代码时,它显示在错误下方
4: Can't change directory: /Inbox/ARR_SI_MedicalTranscriptionBillCorp_PD_20200724_32137.TXT
at com.jcraft.jsch.ChannelSftp.cd(ChannelSftp.java:350)
at svb.ftp.bs.load.downloadFtp.main(downloadFtp.java:67)
Process exited with exit code 0.
【问题讨论】:
标签: java sftp jsch private-key