java連線sftp伺服器 (隨筆)
網上有很多成型的例子,在這裡提供幾個不錯的連線
網sftp伺服器上傳檔案 需藉助jsch.jar包
JSch 實現了三種傳輸模式
1,完全覆蓋模式
2,恢復模式,(類似於斷點上傳)因外部原因導致檔案上傳中斷,下次上傳時會接著上次的繼續上傳
3,追加模式,若發現檔案已經存在,則在目標文化後追加。
ChannelSftp類是JSch實現sftp核心類,實現了很多方法。
put(): 檔案上傳
get(): 檔案下載
cd(): 進入指定目錄
ls(): 得到指定目錄下的檔案列表
rename(): 重新命名指定檔案或目錄
rm(): 刪除指定檔案
mkdir(): 建立目錄
rmdir(): 刪除目錄
put方法把檔案放在伺服器上,put ,get方法都有多個過載方法。請認真閱讀原始碼。JSch是Java Secure Channel的縮寫。JSch是一個SSH2的純Java實現。它允許你連線到一個SSH伺服器,並且可以使用埠轉發,X11轉發,檔案傳輸等,當然你也可以整合它的功能到你自己的應用程式
SFTP是Secure File TransferProtocol的縮寫,安全檔案傳送協議。可以為傳輸檔案提供一種安全的加密方法。SFTP 為 SSH的一部份,是一種傳輸檔案到伺服器的安全方式。SFTP是使用加密傳輸認證資訊和傳輸的資料,所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網路安全性要求更高時,可以使用SFTP代替FTP。
詳細講解sftp檔案上傳
JAVA實現SFTP的例項
在開發過程中,遇到連線錯誤的異常。
com.jcraft.jsch.JSchException:Session.connect: java.io.IOException:
程式碼執行到 sshSession.connect();程式報錯,在網上搜了大半天未果。後來請教一個朋友,換了一個jar包,問題得到解決。當問題出現的時候,我們總是侷限在一個小小的問題上,而不會跳出這個圈,全域性的考慮,這樣往往浪費很多時間。^_^ 他說了一句話,對我啟發很大,工作開不開心和能力無關。吼吼~~
20170622新增:
這篇blog是13年寫的,目前本人已經不在從事開發工作,
但是依然有很多小夥伴留言和私信諮詢替換哪個jar解決了問題,下面結合@春畫秋事 小夥伴的測試,將jar包以及版本給大家 補充一下,
可以百度搜索jsch-0.1.54.jar,替換該版本的jar包,問題解決。