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. 做办公用品、文具方面的 B2C 是否有前景呢?

    企乐买现在正在做这方面的事,从市场角度来说需求是有的,客单价和重复购买率都还可以,但是也存在几个致命问题使得施展不开举步维艰: 1.中国特有的市场环境:在美国企业办公用品一般都是网上采购,避免灰色的东 ...

  2. cookie 路径问题

    Path – 路径.指定与cookie关联的WEB页.值可以是一个目录,或者是一个路径.如果http://www.zdnet.com/devhead /index.html 建立了一个cookie,那 ...

  3. bzoj 2761: [JLOI2011]不重复数字

    #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #d ...

  4. pthread_mutex_lock

    pthread_mutex_lock pthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mut ...

  5. Android MediaRecorder录制音频

    今天介绍一下在Android中怎么录制音频,在Android中使用MediaRecorder来录制音频,步骤: 1.创建MediaRecorder对象. 2.调用MediaRecorder对象的set ...

  6. mysqld.exe占比cpu 100% 解决方案

    进入mysql命令行,输入show processlist; 查看当前有sql语句的记录

  7. 解决SSH会话连接超时问题

    用SSH客户端连接linux服务器时,经常会出现与服务器会话连接中断现象,照成这个问题的原因便是SSH服务有自己独特的会话连接机制.记得在一年前就有朋友问过我这个问题,那时候我便是草草打发,结果自己现 ...

  8. 4、时间同步ntp服务的安装于配置(作为客户端的配置)

    yum安装ntpd服务   .yum -y install ntp ntpdate (安装时间同步ntp服务) . vi /etc/ntp.conf (修改ntpd服务的配置文件)   3.修改配置文 ...

  9. Qt msgBox 快捷版

    使用 int iRet = msgBox(pos, tr("警告") , tr("确定要删除当前选中的行吗?") , tr(, ); == iRet) retu ...

  10. C#中this在扩展方法的应用

    给类添加扩展方法 1.定义一个类Service public class Service { private string _name; public string Name { get { retu ...