利用sftp进行上传、单个下载、批量下载和删除

本文档介绍了如何使用Java的JSch库进行SFTP操作,包括配置sftp.properties文件,创建SftpUtils类以实现上传、下载、删除和批量下载功能,并提供了测试类进行操作演示。示例代码详细展示了SFTP连接、文件传输及目录管理的过程。
摘要由CSDN通过智能技术生成

 最近公司让用SFTP用来和远端进行交互,学习了;一段时间sftp,现在将代码干货献上,希望对大家能够有所帮助:

1. 在src/com/zkr/sftp(建议建立在src下)下建立sftp.properties文件:

               sftp.host=127.0.0.1
               sftp.port=22
               sftp.username=zhen
               sftp.password=12345
               sftp.timeout=60000
               sftp.privateKey
               sftp.passphrase

2. 创建SFTPUtils类,完成上传、下载、删除功能:

package com.zkr.sftp;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream.GetField;
import java.util.Iterator;
import java.util.Properties;
import java.util.Vector;

import com.enterprisedt.util.debug.Logger;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpATTRS;
import com.jcraft.jsch.SftpException;

public class SftpUtils {

    private static final Logger log = Logger.getLogger(SftpUtils.class); // 用来记录日志

    Session session = null;

    String privateKey = null;
    String passphrase = null;
    String host = null; // sftp服务器的IP
    String username = null; // 用户名
    String password = null; // 密码
    int timeout = 60000; // 超时时间
    int port = 22; // 端口号

    /**
     * 在构造函数中读取配置文件
     */
    public SftpUtils() {

        File file = new File("src/com/zkr/sftp/sftp.properties");
        InputStream in = null;

        try {
            in = new FileInputStream(file);
        } catch (FileNotFoundException e) {
            log.error("异常:文件没有找到", e);
        }

        Properties prop = new Properties();
        try {
            prop.load(in);
        } catch (IOException e) {
            log.error("异常:加载配置文件失败", e);
        }

        // 读取配置文件信息
        host = prop.getProperty("sftp.host");
        port = Integer.parseInt(prop.getProperty("sftp.port"));
        username = prop.getProperty("sftp.username");
        password = prop.getProperty("sftp.password");
        timeout = Integer.parseInt(prop.getProperty("sftp.timeout"));
        privateKey = prop.getProperty("sftp.privateKey");
        passphrase = prop.getProperty("sftp.passphrase");
        log.info("try to connect to " + host + ",username:" + username
                + ",password:" + password + ",port:" + port);
    }

    /**
     * 得到连接
     * 
     * @return
     */
    private ChannelSftp GetConnectSftp() {
        JSch jsch = new JSch();
        ChannelSftp channelSftp = null;
        try {
            if (privateKey != null && !"".equals(privateKey)) {
                // 使用密钥验证方式,密钥可以使有口令的密钥,也可以是没有口令的密钥
                if (passphrase != null && "

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值