天天看點

jsch檔案下載下傳功能

上一篇講述了使用JSch實作檔案上傳的功能,這一篇主要講述一下JSch實作檔案下載下傳的功能。并介紹一些SFTP的輔助方法,如cd,ls等。

檔案下載下傳

JSch檔案下載下傳是通過調用ChannelSftp對象的get方法來實作的。ChannelSftp中有9個get方法的重載方法:

publicvoid get(String src, String dst)

将目标伺服器上檔案名為src的檔案下載下傳到本地,本地檔案名為dst。若dst為目錄,則下載下傳到本地的檔案名将與src檔案名相同。(注:src必須是檔案,不能為目錄)

采用預設的傳輸模式:OVERWRITE

publicvoid get(String src, String dst, SftpProgressMonitor monitor)

并使用實作了SftpProgressMonitor接口的monitor對象來監控檔案的傳輸進度。

publicvoid get(String src, String dst,SftpProgressMonitor monitor, int mode)

指定檔案傳輸模式為mode(mode可選值為:ChannelSftp.OVERWRITE,ChannelSftp.RESUME,ChannelSftp.APPEND)

publicvoid get(String src, OutputStream dst)

将目标伺服器上檔案名為src的檔案下載下傳到本地,下載下傳的資料寫入到輸出流對象dst(如:檔案輸出流)。

publicvoid get(String src, OutputStream dst, SftpProgressMonitor monitor)

publicvoid get(String src, OutputStream dst, SftpProgressMonitor monitor, int mode, long skip)

指定檔案傳輸模式為mode

skip指定了一個跳讀量,即下載下傳時從src檔案跳過skip位元組的資料。(一般不推薦使用該參數,預設設為0)

public InputStream get(String src)

該方法傳回一個輸入流,該輸入流含有目标伺服器上檔案名為src的檔案資料。可以從該輸入流中讀取資料,最終将資料傳輸到本地(如:讀取資料後将資料寫入到本地的檔案中)

(注:該方法不支援多種檔案傳輸模式,如何讀取與儲存資料由應用程式自己确定)

public InputStream get(String src, SftpProgressMonitor monitor)

public InputStream get(String src, final SftpProgressMonitor monitor, finallong skip)

應用執行個體:

jsch檔案下載下傳功能
jsch檔案下載下傳功能
jsch檔案下載下傳功能

注:請分别将main方法中的代碼段1,代碼段2,代碼段3取消注釋,運作程式來進行測試。這三段代碼分别示範了如何使用JSch的各種put方法來進行檔案下載下傳。

程式段:

代碼段1:直接将目标伺服器上檔案名為src的檔案下載下傳到本地,本地檔案名為dst。(注:使用這個方法時,dst可以是目錄,若dst為目錄,則下載下傳到本地的檔案名将與src檔案名相同)

代碼段2:将目标伺服器上檔案名為src的檔案下載下傳到本地的一個輸出流對象,該輸出流為一個檔案輸出流

代碼段3:采用讀取get方法傳回的輸入流資料的方式來下載下傳檔案。這個示例中,将讀取的資料寫入到了本地的一個檔案中。采用這種方式,可以由應用程式設定每次讀取輸入流的資料塊大小,也就是每次傳輸的資料塊大小。比如這個示例中:

這條語句指定了每次傳輸的資料塊大小為2KB,可以從測試代碼段3的輸出中看出确實每次隻傳輸了2KB,即2048位元組:

jsch檔案下載下傳功能
jsch檔案下載下傳功能
jsch檔案下載下傳功能