将远程文件流式传输到文件对象中

时间:2013-02-22 10:10:52

标签: java sshj

如果有人知道如何将远程文件直接传输到文件对象的快速方法,那么没有必要将文件临时存储在计算机上,我们将不胜感激! 到目前为止,我从远程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();

最好的问候

1 个答案:

答案 0 :(得分:3)

使用InMemoryDestFile代替FileSystemFile还不够吗?

修改:...然后使用getOutputStream()访问“文件”...