如果有人知道如何将远程文件直接传输到文件对象的快速方法,那么没有必要将文件临时存储在计算机上,我们将不胜感激! 到目前为止,我从远程ios设备复制文件如下(使用net.schmizz.sshj):
SSHClient ssh = new SSHClient();
ssh.addHostKeyVerifier(fingerprint);
ssh.connect(ip);
try {
ssh.authPassword("username", "userpassword".toCharArray());
ssh.newSCPFileTransfer().download(fileRemote, new FileSystemFile(fileLocal));
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
ssh.disconnect();
}
如果有人对解决方案的代码感兴趣:
正如Nutlike在回答中提到的,最好使用InMemoryDestFile
。
因此,创建以下类:
class MyInMemoryDestFile extends InMemoryDestFile {
public ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
@Override
public ByteArrayOutputStream getOutputStream() throws IOException {
return this.outputStream;
}
}
...在执行下载操作的方法中创建新类的实例:
MyInMemoryDestFile a = new StreamingInMemoryDestFile();
并访问输出流:
ssh.newSCPFileTransfer().download(remoteFile, a);
a.getOutputStream().toByteArray();
最好的问候