鍍金池/ 問答/Java  Linux/ java讀取遠(yuǎn)程服務(wù)器文件

java讀取遠(yuǎn)程服務(wù)器文件

功能:讀取遠(yuǎn)程linux服務(wù)器上指定目錄下的文件內(nèi)容。
已知:服務(wù)器IP、端口號(hào)、用戶名、密碼、路徑、文件名。
我使用的是ssh2方式,建立連接,然后只能做到上傳或者取文件,代碼如下:

    Connection con = new Connection("IP地址");
    ConnectionInfo connect = con.connect();
    boolean isAuthed = con.authenticateWithPassword("用戶名", "密碼");
    SCPClient scpClient = con.createSCPClient();
    //從服務(wù)器獲取文件
    scpClient.get("/home/test /a.txt", "C:/test/b.txt");
    //將本地文件上傳到服務(wù)器
    scpClient.put("C:/test/c.txt", "/home /test/d.txt");
    

然后我查詢后發(fā)現(xiàn)可以通過會(huì)話執(zhí)行Linux命令,代碼如下:

    Session session = con.openSession();
    //服務(wù)器文件移動(dòng)并改名
    session.execCommand("mv -f /home/test/a.txt /home/test2/b.txt");
    //從服務(wù)復(fù)制文件到本地(下載)并改名
    session.execCommand("scp root@192.168.1.1:/home/test/a.txt /home/test2/b.txt");
    //從本地復(fù)制文件到服務(wù)器(上傳)并改名
    session.execCommand("scp /home/test2/b.txt root@192.168.1.1:/home/test/a.txt");
    
    

但是我無法知道如何進(jìn)行文件讀取,因?yàn)槲抑恍枰x取文件,在不下載到本地的情況下,直接讀取到內(nèi)存里執(zhí)行內(nèi)容處理,請(qǐng)大神指教。

使用jar包是svnkit-1.9.0-r10609-atlassian-hosted.jar。
參考的是這個(gè)博客說明,在這個(gè)基礎(chǔ)上根據(jù)自己的情況改了一些,大致和這個(gè)說明一致。
JAVA代碼實(shí)現(xiàn)遠(yuǎn)程服務(wù)器的文件操作 - CSDN博客
https://blog.csdn.net/tao_ssh...

回答
編輯回答
不討喜

get 是一個(gè)重載方法, 在庫中提供了如下函數(shù) get(String remoteFile, OutputStream target)

ByteArrayOutputStream baos = new ByteArrayOutputStream();
scpClient.get("/home/test /a.txt", baos);

// baos.toByteArray(); // 在內(nèi)存中的文件字節(jié)流
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); // 讀取文件字節(jié)流
2018年8月31日 13:35