gpt4 book ai didi

java - 使用 JSch 从 SFTP 服务器下载文件

转载 作者:搜寻专家 更新时间:2023-10-30 21:07:00 25 4
gpt4 key购买 nike

我正在使用 jsch 从服务器下载文件,我的代码如下。

public static void downloadFile(TpcCredentialsDTO dto) {
logger.trace("Entering downloadFile() method");

Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
boolean success = false;

try {
JSch jsch = new JSch();
session = jsch.getSession(dto.getUsername(), dto.getHost(),
dto.getPort());
session.setPassword(dto.getPassword());

session.setConfig("StrictHostKeyChecking", "no");
session.connect();
logger.info("Connected to " + dto.getHost() + ".");

channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;

List<String> filesToDownload = getFilesToDownload(dto,channelSftp);

if (!filesToDownload.isEmpty()) {
for (String fileDownloadName : filesToDownload) {
success = false;
OutputStream output = new FileOutputStream(
"C:\Download\BLT_03112012");

channelSftp.get("BLT_03112012",output);
success = true;
if (success)
logger.info(ServerConstants.DOWNLOAD_SUCCESS_MSG
+ fileDownloadName);
output.close();
}

}else {
logger.info(ServerConstants.NO_FILES_TO_DOWNLOAD
+ ServerUtils.getDateTime());
success = true;
}

} catch (JSchException ex) {
logger.error( ServerConstants.SFTP_REFUSED_CONNECTION, ex);
} catch (SftpException ex) {
logger.error(ServerConstants.FILE_DOWNLOAD_FAILED, ex);
} catch (IOException ex) {
logger.error(ServerConstants.FILE_NOT_FOUND, ex);
}catch (Exception ex) {
logger.error(ServerConstants.ERROR, ex);
}finally {
if (channelSftp.isConnected()) {
try {
session.disconnect();
channel.disconnect();
channelSftp.quit();
logger.info( ServerConstants.FTP_DISCONNECT);
} catch (Exception ioe) {
logger.error(ServerConstants.FTP_NOT_DISCONNECT, ioe);
}
}
}
logger.trace("Exiting downloadFile() method");
}


sftpChannel.get(filename, outputstream) is throwing an error.
  2: File not found
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2629)
at com.jcraft.jsch.ChannelSftp._get(ChannelSftp.java:977)
at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:946)
at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:924)
at za.co.tpc.sftpserver.SftpConnection.downloadFile(SftpConnection.java:72)
at za.co.tpc.server.execute.FtpMtn.main(FtpMtn.java:44)

相同的代码确实下载了文本文档文件类型,但对于"file"文件类型却失败了

最佳答案

尝试使用路径而不是流:

String destPath = "filename.txt";        

if (!filesToDownload.isEmpty()) {
for (String fileDownloadName : filesToDownload) {
success = false;
sftpChannel.get(fileDownloadName , destPath);

如果你想使用文件和流检查这个例子:
http://kodehelp.com/java-program-for-downloading-file-from-sftp-server/

关于java - 使用 JSch 从 SFTP 服务器下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13680057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com