import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session; /**
* @description SFTP工具
* @author Luxh
*/
public class SFTPUtils { private static final Logger Log = LoggerFactory.getLogger(SFTPUtils.class); /**FTP协议*/
private static final String FTP_PROTOCOL = "sftp"; /**
* 获取session
* @param host
* @param port
* @param username
* @param password
* @return
*/
public static Session getSession(String host, int port, String username, String password) {
Session session = null;
try {
Log.info("init session..."); JSch jsch = new JSch();
session = jsch.getSession(username, host, port);
session.setPassword(password);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect(); Log.info("init session successful");
}catch(Exception e) {
Log.error("init session failed"); }
return session;
} /**
* 获取 ChannelSftp
* @param session
* @return
*/
public static ChannelSftp getChannelSftp(Session session){
ChannelSftp sftp = null;
try{
Log.info("init ChannelSftp..."); Channel channel = session.openChannel(FTP_PROTOCOL);
channel.connect();
sftp = (ChannelSftp) channel; Log.info("init ChannelSftp successful");
}catch(Exception e) {
Log.error("init ChannelSftp failed"); }
return sftp; } /**
* 上传
* @param src 源文件路径
* @param dst 目标文件路径
* @param sftp
*/
public static void upload(String src, String dst, ChannelSftp sftp) {
try {
Log.info("begin upload...");
Log.info("src file is:{}", src);
Log.info("dst file is:{}", dst);
sftp.put(src, dst);
Log.info("upload successful");
} catch (Exception e) {
Log.error("upload failed"); }
} /**
* 下载
* @param src 要下载的文件
* @param dst 存放路径
* @param sftp
*/
public static void download(String src, String dst, ChannelSftp sftp) {
try {
Log.info("begin download...");
Log.info("src file is:{} ", src);
Log.info("dst file is:{} ", dst);
sftp.get(src, dst);
Log.info("download successful");
} catch (Exception e) {
Log.error("download failed"); }
} /**
* 删除
* @param path 要删除的文件路径
* @param sftp
*/
public static void delete(String path, ChannelSftp sftp) {
try {
Log.info("begin delete...");
Log.info("dst file is: {}", path);
sftp.rm(path);
Log.info("delete successful");
} catch (Exception e) {
Log.error("delete failed"); }
} /**
* 关闭连接
* @param session
* @param sftp
*/
public static void close(Session session, ChannelSftp sftp){
if(sftp != null) {
sftp.disconnect();
Log.info("ChannelSftp disconnect");
}
if(session != null) {
session.disconnect();
Log.info("Session disconnect");
}
} }

  

  使用了jsch库:http://www.jcraft.com/jsch/

Java操作SFTP的更多相关文章

  1. .net 操作sftp服务器

    因为项目的需要,整理了一段C#操作sftp的方法. 依赖的第三方类库名称为:SharpSSH 1.1.1.13. 代码如下: 1: using System; 2: using System.Coll ...

  2. java操作FTP的一些工具方法

    java操作FTP还是很方便的,有多种开源支持,这里在apache开源的基础上自己进行了一些设计,使用起来更顺手和快捷. 思路: 1.设计FTPHandler接口,可以对ftp,sftp进行统一操作, ...

  3. Java操作Sqlite数据库-jdbc连接

    Java操作Sqlite数据库步骤: 1. 导入Sqlite jdbc 本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD 2 ...

  4. 【MongoDB for Java】Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...

  5. Java操作Oracle

    public class DBCon { // 数据库驱动对象 public static final String DRIVER = "oracle.jdbc.driver.OracleD ...

  6. JAVA操作ORACLE数据库的存储过程

    一.任务提出 JAVA操作oracle11g存储过程实验需要完成以下几个实例: 1.调用没有返回参数的过程(插入记录.更新记录) 2.有返回参数的过程 3.返回列表的过程 4.返回带分页的列表的过程. ...

  7. JAVA操作MongoDB数据库

    1. 首先,下载MongoDB对Java支持的驱动包 驱动包下载地址:https://github.com/mongodb/mongo-java-driver/downloads 2.Java操作Mo ...

  8. Java操作Session与Cookie

    1,Java操作Session Java操作Session非常简单,步骤如下 1.1,在servlet中通过request获取session HttpSession session = request ...

  9. JAVA操作COOKIE

    JAVA操作COOKIE 1.设置Cookie Cookie cookie = new Cookie("key", "value"); cookie.setMa ...

随机推荐

  1. [双连通分量] POJ 3694 Network

    Network Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 9434   Accepted: 3511 Descripti ...

  2. ubuntu install wine

    1 install sUdo add-apt-repository ppa:wine/wine-builds sudo apt-get update sudo apt-get install wine ...

  3. Objective-C学习笔记-第一天(2)

    Objective-C中的协议,相当于Java中的接口 参考:http://www.cnblogs.com/zzy0471/p/3894307.html 一个简单的协议遵循: PersonProtoc ...

  4. 团队开发——冲刺1.b

    冲刺阶段一(第二天) 1.昨天做了什么? 在了解C#的基础上,深入熟悉Windows窗体应用程序,熟练掌握基本功能 2.今天准备做什么? 在C#的Windows窗体应用程序中,设计简单的游戏开始主界面 ...

  5. OpenSSL - 利用OpenSSL自签证书和CA颁发证书

    秘钥操作 这个命令会生成一个1024/2048位的密钥,包含私钥和公钥. openssl genrsa -out private.key 1024/2038                     ( ...

  6. 关于 xcode5 真机调试 的 no matching provisioning profiles found

    产生原因:在xcode5里面不一定是因为你的真机证书有问题,有可能是因为,项目本来在别的组里有会出现此bug 如果你出现上图的错误,只需要在此项目的***.xcodeproj 文件,然后右键选择“显示 ...

  7. Java-->服务器的响应(Servlet--doGet&doPost)

    --> Servelet: 用于接收请求(客户端,浏览器),做出响应的,服务器端的,java类 --> ServletLogin -- Web项目服务器响应的Java实现 package ...

  8. Neo4j Cypher运行示例

    示例来源: Neo4j in Action. 0 准备数据 0.1 node (user1 { name: 'John Johnson', type: 'User', email: 'jsmith@e ...

  9. centos7 查询jdk安装路径

  10. 将JZ2440的调试串口换成com2

    众所周知JZ2440 V3很小巧,精致.今天单就JZ2440的串口来讨论一些问题.我们在用串口进行调试的时候,需要用JZ2440自带的一根USB线连接电脑USB口和开发板的USB-com1口.先来看一 ...