2013-02-22 21 views
5

Jeśli ktokolwiek zna szybki sposób na zdalne przesyłanie strumieniowe bezpośrednio do obiektu pliku, więc nie jest konieczne przechowywanie pliku tymczasowo na komputerze, byłoby to bardzo cenne! Dotychczas skopiować plik ze zdalnego urządzenia iOS następująco (przy użyciu net.schmizz.sshj):Przesyłanie strumieniowe plików zdalnych do obiektów plików

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(); 
} 

Jeśli istnieje ktoś, kto jest zainteresowany w kodzie roztworu:

As Orzechopodobne wspomniane w jego odpowiedzi lepiej używać InMemoryDestFile. Więc utworzyć następujące klasy:

class MyInMemoryDestFile extends InMemoryDestFile { 
    public ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 

    @Override 
    public ByteArrayOutputStream getOutputStream() throws IOException { 
     return this.outputStream; 
    } 
} 

... w sposobie gdzie wykonać operację pobierania utworzyć wystąpienie nowej klasy:

MyInMemoryDestFile a = new StreamingInMemoryDestFile(); 

i dostępu do OutputStream:

ssh.newSCPFileTransfer().download(remoteFile, a); 
a.getOutputStream().toByteArray(); 

Pozdrawiam

Odpowiedz

Powiązane problemy