JSCH SFTP 文件传输 - 文件中的数据已损坏

JSCH SFTP file transfer - Data in the file is getting corrupted

我在 java 中使用 JSCH 传输文件时遇到问题。文件中的数据已损坏,并且间歇性地发生这种情况。我的意思是有时文件上传正确,大多数时候我们注意到当文件大小大于 5 MB 时数据已损坏。

该程序在不同情况下表现不同。

Windows-10:程序运行良好,所有大小的文件都没有问题。

Unix :程序适用于小于 2 MB 的文件。但对于大于 2 MB 的文件,有时文件能够正确上传,但大多数时候我们看到数据被损坏。

我仍然不明白是什么导致了数据损坏?我不认为代码有问题,因为程序在 windows 环境中运行良好,有时在 unix 环境中也是如此。

程序读取数据和写入远程服务器的方式是否有任何问题,或者我在这里遗漏的任何其他东西?请帮忙。

public boolean putFile(String report, String user, String password, String location, 
      String folder) throws Exception {

    boolean status=true;
    JSch shell = new JSch();
    Session session = null;
    session = shell.getSession(user, location, 22);
    session.setPassword(password);
    session.setConfig("StrictHostKeyChecking", "no");
    session.connect();
    Channel channel = null;
    channel = session.openChannel("shell");
    channel.setInputStream(null);
    channel.setOutputStream(null);
    channel = session.openChannel("sftp");
    channel.connect();
    ChannelSftp sftp = (ChannelSftp) channel;
    sftp.cd(folder);
    File outputFile = new File(report);
    FileInputStream fileInputStream = new FileInputStream(outputFile);
    sftp.put(fileInputStream, outputFile.getName());
    session.disconnect();
    return status;
}

我们使用的 jsch 版本中存在错误。阅读 jsch 版本的更改日志,并更新版本。那解决了问题。