您的位置:

jsch实现文件下载(jsch jar包)

jsch实现文件下载(jsch jar包)

更新:

本文目录一览:

  • 1、Apache SSHD实现SFTP服务端,客户端访问进行远程文件上传下载
  • 2、如何升级jsch-0.1.53.jar
  • 3、用java实现sftp下载,报2: No such file
  • 4、如何实现jsch logger打印

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都有多个重载方法,具体请看源代码,这里不一一列出。)