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. [转载]四大Java EE容器

    转载自: https://my.oschina.net/diedai/blog/271367 现在流行的Java EE容器有很多:Tomcat.JBoss.Resin.Glassfish等等.下面对这 ...

  2. 使用Jsoup 抓取页面的数据

    需要使用的是jsoup-1.7.3.jar包   如果需要看文档我下载请借一步到官网:http://jsoup.org/ 这里贴一下我用到的 Java工程的测试代码 package com.javen ...

  3. py 抓取中文网址

  4. web.xml的初始化参数

    web.xml的初始化参数 ---------首先声明,这里所介绍的是web中context-param,init-param参数的初始化配置---------- ------------------ ...

  5. JS日期的获取与加减

    1)获取当前日期: var today = new Date(); 2)设定某个日期: var d = new Date("2015/1/08".replace(/-/g,&quo ...

  6. (转)android平台phonegap框架实现原理

    (原文)http://blog.csdn.net/wuruixn/article/details/7405175 android平台phonegap框架实现原理 分类: Android2012-03- ...

  7. BZOJ 3110 树套树 && 永久化标记

    感觉树套树是个非常高深的数据结构.从来没写过 #include <iostream> #include <cstdio> #include <algorithm> ...

  8. My first Scratch small game

    My first Scratch small game:https://scratch.mit.edu/projects/62700370/ PC or Mac only. Browser & ...

  9. TextView 跑马灯

    首先,写一个类,让其继承自TextView: 重写focus方法,让TextView始终是focus. public class MarqueeText extends TextView { publ ...

  10. SIFT特征提取分析(转载)

    转载自: http://blog.csdn.net/abcjennifer/article/details/7639681 SIFT(Scale-invariant feature transform ...