当前位置 : 主页 > 编程语言 > c++ >

SFTPUtils

来源:互联网 收集:自由互联 发布时间:2021-06-30
SFT 工具类 package com.jyonlinesoa.util;import com.jcraft.jsch.*;import java.util.Properties;/** * Description: SFTP 工具类 * Created by JungLone on 2017/10/12 17:32. */public class SFTPUtils { private String strHost; private int nPor
SFT 工具类
package com.jyonlinesoa.util;

import com.jcraft.jsch.*;

import java.util.Properties;

/**
 * Description: SFTP 工具类
 * Created by JungLone on 2017/10/12 17:32.
 */
public class SFTPUtils {

    private String strHost;
    private int nPort;
    private String strUserName;
    private String strPassword;

    private Session sshSession = null;
    private ChannelSftp channelSftp = null;

    /**
     * Description: 构造 SFTPUtils
     *
     * @param strHost     host
     * @param nPort       端口
     * @param strUserName 用户名
     * @param strPassword 密码
     */
    public SFTPUtils(String strHost, int nPort, String strUserName, String strPassword) {
        this.strHost = strHost;
        this.nPort = nPort;
        this.strUserName = strUserName;
        this.strPassword = strPassword;
    }

    /**
     * Description: 创建连接
     */
    private void connect() {
        JSch jsch = new JSch();
        try {
            sshSession = jsch.getSession(this.strUserName, this.strHost, this.nPort);
            sshSession.setPassword(strPassword);
            Properties sshConfig = new Properties();
            sshConfig.put("StrictHostKeyChecking", "no");
            sshSession.setConfig(sshConfig);
            sshSession.connect();
            Channel channel = sshSession.openChannel("sftp");
            channel.connect();
            channelSftp = (ChannelSftp) channel;
        } catch (JSchException e) {
            e.printStackTrace();
        }

    }

    /**
     * Description: 断开连接
     */
    private void disConnect() {
        if (null != sshSession && sshSession.isConnected()) {
            sshSession.disconnect();
        }
        if (null != channelSftp && channelSftp.isConnected()) {
            channelSftp.disconnect();
        }
    }

    /**
     * Description: 上件文件到远程服务器
     *
     * @param strRemoteDir 远程服务器目录
     * @param strFileName  文件名
     * @param strLocalDir  本地目录
     */
    public void upload(String strRemoteDir, String strFileName, String strLocalDir) {
        try {
            this.connect();
            this.channelSftp.cd(strRemoteDir);
            String strLocalFileName = this.getLocalFileName(strLocalDir, strFileName);
            this.channelSftp.put(strLocalFileName, strFileName);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            this.disConnect();
        }

    }

    /**
     * Description: 下载文件
     *
     * @param strRemoteDir 远程服务器目录
     * @param strFileName  文件名
     * @param strLocalDir  本地目录
     */
    public void download(String strRemoteDir, String strFileName, String strLocalDir) {

        try {
            this.connect();
            this.channelSftp.cd(strRemoteDir);
            this.channelSftp.get(strFileName, this.getLocalFileName(strLocalDir, strFileName));
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            this.disConnect();
        }
    }

    /**
     * Description: 取得文件全路径
     *
     * @param strLocalDir 本地目录
     * @param strFileName 文件名
     * @return 文件全路径
     */
    private String getLocalFileName(String strLocalDir, String strFileName) {
        String strLocalFileName;
        if (strLocalDir.endsWith("/")) {
            strLocalFileName = strLocalDir + strFileName;
        } else {
            strLocalFileName = strLocalDir + "/" + strFileName;
        }
        return strLocalFileName;
    }

    public static void main(String[] args) {
        String strHost = "ftp-1.com";
        int nPort = 22;
        String strUserName = "353030sftp";
        String strPassword = "g2s4T5vb2ry2uo";

        SFTPUtils sftpUtils = new SFTPUtils(strHost, nPort, strUserName, strPassword);

        String strRemoteDir = "check";
        String strFileName = "new_test_check_2017101217.txt";
        String strLocalDir = "/Users/junglone";
        // sftpUtils.download(strDir, strFileName, strLocalDir);
        sftpUtils.upload(strRemoteDir, strFileName, strLocalDir);
    }

}
网友评论