功能:讀取遠程linux服務器上指定目錄下的文件內容。已知:服務器IP、端口號、用戶名、密碼、路徑、文件名。我使用的是ssh2方式,建立連接,然后只能做到上傳或者取文件,代碼如下:
Connection con = new Connection("IP地址");
ConnectionInfo connect = con.connect();
boolean isAuthed = con.authenticateWithPassword("用戶名", "密碼");
SCPClient scpClient = con.createSCPClient();
//從服務器獲取文件
scpClient.get("/home/test /a.txt", "C:/test/b.txt");
//將本地文件上傳到服務器
scpClient.put("C:/test/c.txt", "/home /test/d.txt");
然后我查詢后發現可以通過會話執行Linux命令,代碼如下:
Session session = con.openSession();
//服務器文件移動并改名
session.execCommand("mv -f /home/test/a.txt /home/test2/b.txt");
//從服務復制文件到本地(下載)并改名
session.execCommand("scp [email protected]:/home/test/a.txt /home/test2/b.txt");
//從本地復制文件到服務器(上傳)并改名
session.execCommand("scp /home/test2/b.txt [email protected]:/home/test/a.txt");
但是我無法知道如何進行文件讀取,因為我只需要讀取文件,在不下載到本地的情況下,直接讀取到內存里執行內容處理,請大神指教。
使用jar包是svnkit-1.9.0-r10609-atlassian-hosted.jar。參考的是這個博客說明,在這個基礎上根據自己的情況改了一些,大致和這個說明一致。JAVA代碼實現遠程服務器的文件操作 - CSDN博客https://blog.csdn.net/tao_ssh...
1 回答

紅顏莎娜
TA貢獻1842條經驗 獲得超13個贊
get
是一個重載方法, 在庫中提供了如下函數 get(String remoteFile, OutputStream target)
ByteArrayOutputStream baos = new ByteArrayOutputStream();
scpClient.get("/home/test /a.txt", baos);
// baos.toByteArray(); // 在內存中的文件字節流
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); // 讀取文件字節流
添加回答
舉報
0/150
提交
取消