jsch實現文件下載(jsch jar包)

本文目錄一覽:

Apache SSHD實現SFTP服務端,客戶端訪問進行遠程文件上傳下載

package jsch;

import java.io.File;

import java.io.FileInputStream;

import java.util.Properties;

import com.jcraft.jsch.Channel;

import com.jcraft.jsch.ChannelSftp;

import com.jcraft.jsch.JSch;

import com.jcraft.jsch.JSchException;

import com.jcraft.jsch.Session;

public class Test {

    protected String host;//sftp服務器ip

    protected String username;//用戶名

    protected String password;//密碼

    protected String privateKey;//密鑰文件路徑

    protected String passphrase;//密鑰口令

    protected int port = 22;//默認的sftp端口號是22

    /**

     * 獲取連接

     * @return channel

     */

    public ChannelSftp connectSFTP() {

        JSch jsch = new JSch();

        Channel channel = null;

        try {

            if (privateKey != null  !””.equals(privateKey)) {

                //使用密鑰驗證方式,密鑰可以使有口令的密鑰,也可以是沒有口令的密鑰

                if (passphrase != null  “”.equals(passphrase)) {

                    jsch.addIdentity(privateKey, passphrase);

                } else {

                    jsch.addIdentity(privateKey);

                }

            }

            Session session = jsch.getSession(username, host, port);

            if (password != null  !””.equals(password)) {

                session.setPassword(password);

            }

            Properties sshConfig = new Properties();

            sshConfig.put(“StrictHostKeyChecking”, “no”);// do not verify host key

            session.setConfig(sshConfig);

            // session.setTimeout(timeout);

            session.setServerAliveInterval(92000);

            session.connect();

            //參數sftp指明要打開的連接是sftp連接

            channel = session.openChannel(“sftp”);

            channel.connect();

        } catch (JSchException e) {

            e.printStackTrace();

        }

        return (ChannelSftp) channel;

    }

    

    /**

     * 上傳文件

     * 

     * @param directory

     *            上傳的目錄

     * @param uploadFile

     *            要上傳的文件

     * @param sftp

     */

    public void upload(String directory, String uploadFile, ChannelSftp sftp) {

        try {

            s;

            File file = new File(uploadFile);

            s(new FileInputStream(file), file.getName());

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    /**

     * 下載文件

     * 

     * @param directory

     *            下載目錄

     * @param downloadFile

     *            下載的文件

     * @param saveFile

     *            存在本地的路徑

     * @param sftp

     */

    public void download(String directory, String downloadFile,

            String saveFile, ChannelSftp sftp) {

        try {

            s;

            s;

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    /**

     * 刪除文件

     * 

     * @param directory

     *            要刪除文件所在目錄

     * @param deleteFile

     *            要刪除的文件

     * @param sftp

     */

    public void delete(String directory, String deleteFile, ChannelSftp sftp) {

        try {

            s;

            s;

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    

    public void disconnected(ChannelSftp sftp){

        if (sftp != null) {

            try {

                s;

            } catch (JSchException e) {

                e.printStackTrace();

            }

            s;

        }

    }

}

如何升級jsch-0.1.53.jar

首先這裡需要介紹一個新朋友給大家,就是他JSch。

這裡簡單介紹一下JSch,他是是SSH2的一個純Java實現。Java中可以通過使用JSch來連接到sshd 服務器上,並進行文件的下載刪除上傳等操作。

2

JSch下載地址為可以直接百度一下。

找到Download,如圖所示:

這裡我們看到有兩個可以下載的,一個是.zip,一個是.jar。

jsch-0.1.53.zip:為JSch的源碼壓縮包,有興趣的碼友可以下載下來研究一下。

jsch-0.1.53.jar:為JSch的編譯好的jar包,開發時放到工程中即可。

這裡我們就直接下載jsch-0.1.53.jar了。

END

JSch使用

我們將下載好的jsch-0.1.53.jar包放在我們的工程下方,並將jar包引入到工程中。

在工程中定義一個連接SFTP的類,這裡我們定義為SFTPUtil.java。

大家可以根據自己需要進行定義。

首先我們需要在類中定義幾個靜態變量。

主機地址、端口號、用戶名、密碼

接下來我們定義鏈接到該服務器的方法名,這裡命名該方法名為connect。

創建服務器連接的過程大致為一下幾點:

1、創建session,將服務器地址信息放入session;

2、建立連接;

3、打開channel;

4、鏈接成功;

用java實現sftp下載,報2: No such file

String directory = “.”;

目測 /home/httpd/test/ 是*nix的路徑,而你用的是Windows,一來,沒有這個目錄,二來SFTP服務器分配的目錄應該也不是這個,所以改”.”,即當前目錄試試,如果不行就留空,或者改”/”

如何實現jsch logger打印

ChannelSftp類是JSch實現SFTP核心類,它包含了所有SFTP的方法,如:

put(): 文件上傳

get(): 文件下載

cd(): 進入指定目錄

ls(): 得到指定目錄下的文件列表

rename(): 重命名指定文件或目錄

rm(): 刪除指定文件

mkdir(): 創建目錄

rmdir(): 刪除目錄

等等(這裡省略了方法的參數,put和get都有多個重載方法,具體請看源代碼,這裡不一一列出。)

原創文章,作者:NXLL,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144039.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
NXLL的頭像NXLL
上一篇 2024-10-24 15:27
下一篇 2024-10-24 15:27

相關推薦

  • vue下載無後綴名的文件被加上後綴.txt,有後綴名的文件下載正常問題的解決

    本文旨在解決vue下載無後綴名的文件被加上後綴.txt,有後綴名的文件下載正常的問題,提供完整的代碼示例供參考。 一、分析問題 首先,需了解vue中下載文件的情況。一般情況下,我們…

    編程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件並生成完整的圖像

    OBJ格式是一種用於表示3D對象的標準格式,通常由一組頂點、面和紋理映射坐標組成。在本文中,我們將討論如何將多個OBJ文件拼接在一起,生成一個完整的3D模型。 一、讀取OBJ文件 …

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 為什麼用cmd運行Java時需要在文件內打開cmd為中心

    在Java開發中,我們經常會使用cmd在命令行窗口運行程序。然而,有時候我們會發現,在運行Java程序時,需要在文件內打開cmd為中心,這讓很多開發者感到疑惑,那麼,為什麼會出現這…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • Python將矩陣存為CSV文件

    CSV文件是一種通用的文件格式,在統計學和計算機科學中非常常見,一些數據分析工具如Microsoft Excel,Google Sheets等都支持讀取CSV文件。Python內置…

    編程 2025-04-29
  • Python zipfile解壓文件亂碼處理

    本文主要介紹如何在Python中使用zipfile進行文件解壓的處理,同時詳細討論在解壓文件時可能出現的亂碼問題的各種解決辦法。 一、zipfile解壓文件亂碼問題的根本原因 在P…

    編程 2025-04-29
  • Python如何導入py文件

    Python是一種開源的高級編程語言,因其易學易用和強大的生態系統而備受青睞。Python的import語句可以幫助用戶將一個模塊中的代碼導入到另一個模塊中,從而實現代碼的重用。本…

    編程 2025-04-29
  • Python合併多個相同表頭文件

    對於需要合併多個相同表頭文件的情況,我們可以使用Python來實現快速的合併。 一、讀取CSV文件 使用Python中的csv庫讀取CSV文件。 import csv with o…

    編程 2025-04-29
  • Python寫文件a

    Python語言是一種功能強大、易於學習、通用並且高級編程語言,它具有許多優點,其中之一就是能夠輕鬆地進行文件操作。文件操作在各種編程中都佔有重要的位置,Python作為開發人員常…

    編程 2025-04-29

發表回復

登錄後才能評論