连接SCP删除服务器上的文件

前几天修复一个bug,满足当文件重新上传把之前上传的文件从服务器上删除掉。
我们对于这部分的功能使用的是scp拷贝本地文件到服务器上,并不是用fastdfs直接上传。
代码注解很详细,需要用到的jar包去maven仓库添加依赖。

直接上代码

package com.creditstate.web.model.common.util;
import com.creditstate.cn.utils.CSPropertiesUtils;
import com.jcraft.jsch.*;
import org.apache.log4j.Logger;
import java.util.Properties;
/**
   *{  Scp文件服务工具类  }
   *
   * @AUTHOR: 南风 Created in 2019/6/17  16:24
   * @SINCE: JDK 1.8
 */
public class ScpFileUtils {
    private static Logger log = Logger.getLogger(ScpFileUtils.class);
    private static Session session;
    private static Channel channel;
    private static ChannelSftp channelSftp;
  
	/**   scp scpIp   */
 	 private static String scpUserName = "";
    /**   scp port   */
    private static int port = 0;
    /**   scp 用户名   */
    private static String scpUserName = "";
    /**   scp 用户密码   */
    private static String scpPassWord = "";
    /**   scp 文件夹目录(文件资源存放的文件夹)   */
    private static String scpServerWorks = "";
     
   static {
   	   scpIp = CSPropertiesUtils.getProperties("config-test.properties").getProperty("scp.server.ip");    
 
       port = Integer.parseInt(CSPropertiesUtils.getProperties("config-test.properties").getProperty("scp.server.port"));

	   scpUserName = CSPropertiesUtils.getProperties("config-test.properties").getProperty("scp.server.user");

 	   scpPassWord = CSPropertiesUtils.getProperties("config-test.properties").getProperty("scp.server.password");

 	   scpServerWorks = CSPropertiesUtils.getProperties("config-test.properties").getProperty("scp.server.works");

    //静态代码块 先执行,为建立连接
    createChannel();
    
	 }
     

/**
 * {   建立连接 }
 *
 * @AUTHOR: 南风 Created in 2019/6/17 16:28
 * @SINCE: JDK 1.8
 */
public static void createChannel() {   
 	 log.info("建立与scp服务器连接");  
 	 try{
     JSch jSch = new JSch();
     session = jSch.getSession(scpUserName, scpIp, port);
     // 使用用户名密码创建SSH
     session.setPassword(scpPassWord);

     Properties properties = new Properties();
     // 主动接收ECDSA key fingerprint,不进行HostKeyChecking
     properties.put("StrictHostKeyChecking", "no");
     session.setConfig(properties);
     // 设置超时时间为无穷大
     session.setTimeout(0);
     // 通过session建立连接
     session.connect(); 

     // 打开SFTP通道
     channel = session.openChannel("sftp");
     channel.connect();
     channelSftp = (ChannelSftp) channel;
     } catch (JSchException e) {         
		log.error("建立与scp服务器连接异常",  e.printStackTrace());      
	 }
		log.info("与scp服务器连接成功");
}

   

/**
 * {   上传文件  }
 *
 * @AUTHOR: 南风 Created in 2019/6/17 16:29
 * @SINCE: JDK 1.8
 */
public static boolean uploadFile(String src, String fileName) {
    if (channelSftp == null) {
        log.warn("need create channelSftp before upload file");
        return false;
    }

    if (channelSftp.isClosed()) {
        createChannel(); // 如果被关闭则应重新创建
    }
    try {
        channelSftp.put(src, fileName, ChannelSftp.OVERWRITE);
        return true;
    } catch (SftpException e) {
        e.printStackTrace();
        return false;
    }
}

/**
 * {  删除服务器上的文件  }
 *
 *  fileName : 带后缀的文件名称
 *
 * @AUTHOR: 南风 Created in 2019/6/17 16:30
 * @SINCE: JDK 1.8
 */
public static boolean removeFile(String fileName) {
    if (channelSftp == null) {
        log.warn("先连接SCP服务器");
        return false;
    }

    if (channelSftp.isClosed()) {
        createChannel(); // 如果被关闭则应重新创建
    }
    try {
        //进入该文件夹下
        channelSftp.cd(scpServerWorks);
        //删除文件
        channelSftp.rm(fileName);
        return true;
    } catch (SftpException e) {
        e.printStackTrace();
        return false;
    }
}

/**
 * {  关闭连接  }
 *
 * @AUTHOR: 南风 Created in 2019/6/17 16:29
 * @SINCE: JDK 1.8
 */
public static void closeChannel() {
    if (channel != null) {
        channel.disconnect();
    }
    if (session != null) {
        session.disconnect();
    }
  }
  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值