Если кто-нибудь знает быстрый способ получить удаленный файл, напрямую передающий его в файл-файл, поэтому нет необходимости хранить файл временно на компьютере, это было бы очень полезно! До сих пор я скопировать файл с удаленного КСН-устройства следующим образом (с использованием 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();
}
Если есть кто-нибудь, кто заинтересован в коде решения:
As Как упоминалось в его ответе, лучше использовать InMemoryDestFile
. Итак, создайте следующий класс:
class MyInMemoryDestFile extends InMemoryDestFile {
public ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
@Override
public ByteArrayOutputStream getOutputStream() throws IOException {
return this.outputStream;
}
}
... в вашем методе, где вы выполняете операцию загрузки создать экземпляр нового класса:
MyInMemoryDestFile a = new StreamingInMemoryDestFile();
и доступ к OutputStream:
ssh.newSCPFileTransfer().download(remoteFile, a);
a.getOutputStream().toByteArray();
С наилучшими пожеланиями