2013-02-22 13 views
5

यदि कोई व्यक्ति किसी फ़ाइल ऑब्जेक्ट में सीधे रिमोट फ़ाइल को सीधे स्ट्रीम करने का तरीका जानता है, तो कंप्यूटर पर अस्थायी फ़ाइल को संग्रहीत करना आवश्यक नहीं है, इसकी सराहना की जाएगी! अब तक मैं एक दूरस्थ 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(); 
} 

यदि बहुत जो कोई समाधान के कोड में रुचि है:

के रूप में अपने जवाब में उल्लिखित नट जैसा 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(); 

सबसे अच्छा

उत्तर

3

का उपयोग करने के लिए पर्याप्त नहीं होगा FileSystemFile के बजाय?

संपादित करें: ... और फिर 'फ़ाइल' तक पहुंचने के लिए getOutputStream() का उपयोग करें ...

संबंधित मुद्दे