通过SFTP将压缩文件从Windows传输到Linux时出错

时间:2017-12-14 13:51:42

标签: java sftp jsch

我正在使用Jsch Library(版本0.1.50)将文件从Windows服务器传输到Linux服务器,我使用ChannelSftp.put方法来执行相同操作。

代码将逐个从文件夹中读取压缩文件并传输到远程Linux服务器。

在停止工作之前曾经工作过的相同代码。

我验证了以下所有选项。没有问题。

将文件重命名为现有文件的名称。 创建已存在的目录。 将远程文件移动到其他文件系统(HDD)。 将文件上载到完整文件系统(HDD)。 超过用户磁盘配额。

有人可以让我知道我做错了吗

代码:

JSch jsch = new JSch();
session =jsch.getSession(ServerUsername,ServerIP,rdProcServerPort);
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword(Configuration.rdProcServerPassword);
session.connect();
channel = (ChannelSftp) session.openChannel("sftp");
channel.connect();
channel.cd(ServerDestPath);
File file = new File(zipFilePath);
File zipFilLst[] = file.listFiles();
for (File zFil : zipFilLst) { 
    FileInputStream fis = new FileInputStream(zFil);
    channel.put(fis, zFil.getName());
    fis.close();
}

例外:

  

4:java.io.IOException:输入流关闭   com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:689)at at   com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:540)at at   com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:492)引起:   java.io.IOException:输入流已关闭   com.jcraft.jsch.ChannelSftp.fill(ChannelSftp.java:2871)at at   com.jcraft.jsch.ChannelSftp.header(ChannelSftp.java:2895)at at   com.jcraft.jsch.ChannelSftp.checkStatus(ChannelSftp.java:243 3)at at   com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:678)

0 个答案:

没有答案