我需要将一个大文件(即> = 1gb)从本地传输到远程。
为此,我使用了JSCH库,并尝试了两种方法/方法。
第一种方法:
sftpChannel.put(new FileInputStream("file path"), "remotePath");
第二种方法(尝试分块阅读):
bufferInput = new BufferedInputStream(new FileInputStream("file path"));
byte data[] = new byte[4096];
byteOut = new ByteArrayOutputStream();
int count;
while ((count = bufferInput.read(data, 0, 4096)) != -1) {
byteOut.write(data, 0, count);
}
bufferInput.close();
InputStream is = new ByteArrayInputStream(byteOut.toByteArray());
byteOut.flush();
byteOut.close();
sftpChannel.put(is, "remotePath");
is.close();
对于大型文件,这两种方法均失败,但是将文件传输到远程服务器时,文件已损坏,这没有错误。
对于较小的文件,将按预期执行相同的代码。
还有其他解决方法吗?或代码中有错误吗?