java使用Sftp上传下载文件

java使用Sftp上传下载文件

package com.configserver.uitis;
import com.jcraft.jsch.*;
import java.util.Properties;

/**
 * @Author:刘德安x
 * @Data:2020/10/9 10:05
 */
public class SftpCustom {
     
    private ChannelSftp channel;
    private Session session;
    private String sftpPath;

    SftpCustom() {
     
         /*
         使用端口号、用户名、密码以连接SFTP服务器
         */
        this.connectServer("IP地址", 22, "用户名", "密码", "/root/");
    }

    SftpCustom(String ftpHost, int ftpPort, String ftpUserName, String ftpPassword, String sftpPath) {
     
        this.connectServer(ftpHost, ftpPort, ftpUserName, ftpPassword, sftpPath);
    }

    public void connectServer(String ftpHost, int ftpPort, String ftpUserName, String ftpPassword, String sftpPath) {
     
        try {
     
            this.sftpPath = sftpPath;

            // 创建JSch对象
            JSch jsch = new JSch();
            // 根据用户名,主机ip,端口获取一个Session对象
            session = jsch.getSession(ftpUserName, ftpHost, ftpPort);
            if (ftpPassword != null) {
     
                // 设置密码
                session.setPassword(ftpPassword);
            }
            Properties configTemp = new Properties();
            configTemp.put("StrictHostKeyChecking", "no");
            // 为Session对象设置properties
            session.setConfig(configTemp);
            // 设置timeout时间
            session.setTimeout(60000);
            session.connect();
            // 通过Session建立链接
            // 打开SFTP通道
            channel = (ChannelSftp) session.openChannel("sftp");
            // 建立SFTP通道的连接
            channel.connect();
        } catch (JSchException e) {
     
            //throw new RuntimeException(e);
        }
    }

    /**
     * 断开SFTP Channel、Session连接
     */
    public void closeChannel() {
     
        try {
     
            if (channel != null) {
     
                channel.disconnect();
            }
            if (session != null) {
     
                session.disconnect();
            }
        } catch (Exception e) {
     
            //
        }
    }

    /**
     * 上传文件
     *
     * @param localFile  本地文件
     * @param remoteFile 远程文件
     */
    public void upload(String localFile, String remoteFile) {
     
        try {
     
            remoteFile = sftpPath + remoteFile;
            //OVERWRITE 等于覆盖更新
            channel.put(localFile, remoteFile, ChannelSftp.OVERWRITE);
            channel.quit();
        } catch (SftpException e) {
     
            //e.printStackTrace();
        }
    }

    /**
     * 下载文件
     *
     * @param remoteFile 远程文件
     * @param localFile  本地文件
     */
    public void download(String remoteFile, String localFile) {
     
        try {
     
            remoteFile = sftpPath + remoteFile;
            channel.get(remoteFile, localFile);
            channel.quit();
        } catch (SftpException e) {
     
            //e.printStackTrace();
        }
    }

    public static void main(String[] args) {
     
        SftpCustom sftpCustom = new SftpCustom();
        //上传测试
        String localfile = "D:/jetbrains-agent.jar";
        String remotefile = "jetbrains-agent.jar";
        sftpCustom.upload(localfile, remotefile);

        //下载测试
       // sftpCustom.download(remotefile, "E:/lalala/tt3.xlsx");

        sftpCustom.closeChannel();
    }
}

你可能感兴趣的:(sftp,java)