在工作中常会用到通过sftp进行文件的上传和下载,该类是自己分装的一个工具类,后续可以根据需要添加相应的方法:

package com.sogou.map.usercenter.bmsync.controller;import com.jcraft.jsch.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Vector;public class SFTPTools {private static Logger logger = LoggerFactory.getLogger(SFTPTools.class);private static final String sftp_host="10.111.61.71";private static final int sftp_port=22;private static final String sftp_user="root";private static final String sftp_password="test";/*** 链接sftp服务器* @param hostname* @param port* @param username* @param password* @return*/public static ChannelSftp getSFTPConnect() {Session sshSession = null;ChannelSftp sftp = null;try {JSch jsch = new JSch();sshSession = jsch.getSession(sftp_user, sftp_host, sftp_port);sshSession.setPassword(sftp_password);Properties sshConfig = new Properties();sshConfig.put("StrictHostKeyChecking", "no");sshSession.setConfig(sshConfig);sshSession.connect();Channel channel = sshSession.openChannel("sftp");channel.connect();sftp = (ChannelSftp) channel;} catch (Exception e) {logger.error("连接sftp服务器失败", e);}return sftp;}/*** 关闭sftp服务器* @param channelSftp*/public static void closeChannelSftp(ChannelSftp channelSftp) {Session sshSession = null;try {if (channelSftp != null) {sshSession = channelSftp.getSession();if (channelSftp.isConnected()) {channelSftp.disconnect();channelSftp = null;} else if (channelSftp.isClosed()) {logger.info("sftp is closed already");}}if (sshSession != null) {if (sshSession.isConnected()) {sshSession.disconnect();} else {logger.info("sshSession is disconnected...");}}} catch (JSchException e) {logger.error("关闭sftp服务器失败", e);}}/*** 上传文件** @param directory  上传的目录,如果目录不存在,则自动创建* @param uploadFile 要上传的文件* @param sftp*/public static boolean upload(String directory, String uploadFile, ChannelSftp sftp) {boolean result = false;try {/**进入文件夹 并上传文件,并修改结果为true*/sftp.cd(directory);File file = new File(uploadFile);FileInputStream inputStream = new FileInputStream(file);sftp.put(inputStream, file.getName());inputStream.close();result = true;} catch (Exception e) {e.printStackTrace();}return result;}public static boolean put(InputStream src, String dst, ChannelSftp sftp) throws Exception {boolean result = false;if (null == sftp || !sftp.isConnected()) {throw new Exception("sftp Channel invalid.");}if (null == src) {throw new Exception(" upload null to ftp server is forbidden.");}try {sftp.put(src, dst, ChannelSftp.OVERWRITE);result = true;} catch (Exception e) {logger.info("sftp 上传文件发生异常",e);throw e;}return result;}public static boolean openDir(String directory,ChannelSftp sftp){try{sftp.cd(directory);return true;}catch(SftpException e){return false;}}public String getSftpList(String pathName,ChannelSftp sftp)throws IOException,SftpException{List<String> sftpList=new ArrayList<String>();boolean flag=  openDir(pathName,sftp);if(flag){Vector vv = sftp.ls(pathName);if(vv == null && vv.size() == 0){return  null;}else{for(Object object : vv){ChannelSftp.LsEntry entry=(ChannelSftp.LsEntry)object;String filename=entry.getFilename();if(".".equals(filename) || "..".equals(filename)){continue;}if(openDir(pathName+filename+"/",sftp)){//能打开,说明是目录,接着遍历getSftpList(pathName+filename+"/",sftp);}else{sftpList.add(filename);}}}}else{logger.info("对应的目录"+pathName+"不存在!");}return sftpList.get(0);}
}

java操作SFTP工具类相关推荐

  1. java操作svn工具类

    依赖包 <dependency><groupId>org.tmatesoft.svnkit</groupId><artifactId>svnkit< ...

  2. java 操作IP工具类(子网、地址等)

    分享一个操作IP工具类,包含:格式校验,二进制IP互相转换,网段转换,获取网段内IP,校验IP冲突等等 package com.algoblu.pts.boss.basic.utils.ipOpera ...

  3. java连接sftp工具类

    本工具类支持远程连接sftp,上传下载文件 需要用到是jar是jsch-0.1.29.jar import java.io.BufferedReader;import java.io.File;imp ...

  4. 基于java的SFTP工具类

    如果是FTP的看这里, 基于java的批量上传下载的FTP工具类 首先引入依赖 <dependency><groupId>org.netbeans.external</g ...

  5. Java操作Excel工具类

    Excel工具类 要说的话 长期作为一个c/v工程师,搞了很久但是感觉还是比较空虚,正好最近又在弄Excel相关的东西,然后就基于POI封装了一个比较简单易用的工具类.在这之前,本人水平一般般,还希望 ...

  6. java中文件操作的工具类

    代码: package com.lky.pojo;import java.io.BufferedReader; import java.io.BufferedWriter; import java.i ...

  7. 实现一个在JNI中调用Java对象的工具类,从此只需一行代码

    前言 我们知道在jni中执行一个java函数需要调用几行代码才行,如 jclass objClass = (*env).GetObjectClass(obj); jmethodID methodID ...

  8. android文件读取工具类,Android 下读取Assets Properties操作封装工具类

    Android 下读取Assets Properties操作封装工具类 发布时间:2018-06-03作者:laosun阅读(2081) 为了方便使用,首先创建BaseApplication类,如下所 ...

  9. 玩转JDBC打造数据库操作万能工具类JDBCUtil,加入了高效的数据库连接池,利用了参数绑定有效防止SQL注入

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53750584 本文出自[DylanAndroid的博客] 玩转JDBC打造数据 ...

  10. Java导入Excel工具类使用教程

    前言: 本工具类提供了Excel导入功能,通过反射机制将Excel中数据映射到实体类中,从而获取Excel数据,工具类依赖org.apache.poi包.支持RESTful API,支持Spring ...

最新文章

  1. mysql as 后面字段_mysql 字段as详解及实例代码
  2. 打开摄像头,2D插画实时变动画,中国程序媛出品,Demo在线可玩
  3. DPDK 初识DPDK(十五)
  4. TCL with SNPS llengthlappendget_cellsget_ports
  5. go语言高性能缓存组件ccache分析
  6. 成功解决local variable 'str' referenced before assignment
  7. EFCore之命令行工具
  8. 百度二年级手工机器人_让父母少弯腰的家务神器——追觅扫拖机器人慧目F9评测...
  9. 02-linux安装nodejs
  10. bat脚本——提取多个文件夹到指定路径
  11. TADF的发展史前景概念,热活化延迟荧光(TADF)材料的未来发展
  12. 手机六大操作系统优缺点比较
  13. 【简单的密码生成器】
  14. 梯度grad公式_FLAC3D梯度计算详解
  15. 医药公司协同电子商务系统
  16. android 高德地图 删除多边形,高德地图多边形覆盖物添加、获取、删除
  17. [转载] 七龙珠第一部——第041话 玛斯鲁塔的毁灭
  18. “无人驾驶汽车系统入门”博客专栏
  19. 《git-修改.gitignore后使其配置生效方法》---记录几个命令而已
  20. 反射阵天线(Reflectarray Antenna)设计方法简述

热门文章

  1. c语言人工智能程序,怎么程序编程语言 怎么用C语言编写人工智能程序?
  2. ftell函数使用注意事项
  3. Pspice17.2安装教程
  4. 抖音超火的网页表白代码大全(浪漫的html表白源代码)
  5. 高等数学在计算机中的应用论文1500字,大学高等数学论文范文
  6. 求相似三角形的几种方法,相似三角形算法有哪些
  7. 下雪软件_Excel下雪天
  8. 破解百度空间、新浪相册、网易、搜狐等博客图片防盗链的方法
  9. Unity3D 中的定制特性以及简单的编辑器扩展案例(1)
  10. 反三角函数在线计算机,arcsin计算器(反三角函数计算器在线)