java操作SFTP工具类
在工作中常会用到通过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工具类相关推荐
- java操作svn工具类
依赖包 <dependency><groupId>org.tmatesoft.svnkit</groupId><artifactId>svnkit< ...
- java 操作IP工具类(子网、地址等)
分享一个操作IP工具类,包含:格式校验,二进制IP互相转换,网段转换,获取网段内IP,校验IP冲突等等 package com.algoblu.pts.boss.basic.utils.ipOpera ...
- java连接sftp工具类
本工具类支持远程连接sftp,上传下载文件 需要用到是jar是jsch-0.1.29.jar import java.io.BufferedReader;import java.io.File;imp ...
- 基于java的SFTP工具类
如果是FTP的看这里, 基于java的批量上传下载的FTP工具类 首先引入依赖 <dependency><groupId>org.netbeans.external</g ...
- Java操作Excel工具类
Excel工具类 要说的话 长期作为一个c/v工程师,搞了很久但是感觉还是比较空虚,正好最近又在弄Excel相关的东西,然后就基于POI封装了一个比较简单易用的工具类.在这之前,本人水平一般般,还希望 ...
- java中文件操作的工具类
代码: package com.lky.pojo;import java.io.BufferedReader; import java.io.BufferedWriter; import java.i ...
- 实现一个在JNI中调用Java对象的工具类,从此只需一行代码
前言 我们知道在jni中执行一个java函数需要调用几行代码才行,如 jclass objClass = (*env).GetObjectClass(obj); jmethodID methodID ...
- android文件读取工具类,Android 下读取Assets Properties操作封装工具类
Android 下读取Assets Properties操作封装工具类 发布时间:2018-06-03作者:laosun阅读(2081) 为了方便使用,首先创建BaseApplication类,如下所 ...
- 玩转JDBC打造数据库操作万能工具类JDBCUtil,加入了高效的数据库连接池,利用了参数绑定有效防止SQL注入
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53750584 本文出自[DylanAndroid的博客] 玩转JDBC打造数据 ...
- Java导入Excel工具类使用教程
前言: 本工具类提供了Excel导入功能,通过反射机制将Excel中数据映射到实体类中,从而获取Excel数据,工具类依赖org.apache.poi包.支持RESTful API,支持Spring ...
最新文章
- mysql as 后面字段_mysql 字段as详解及实例代码
- 打开摄像头,2D插画实时变动画,中国程序媛出品,Demo在线可玩
- DPDK 初识DPDK(十五)
- TCL with SNPS llengthlappendget_cellsget_ports
- go语言高性能缓存组件ccache分析
- 成功解决local variable 'str' referenced before assignment
- EFCore之命令行工具
- 百度二年级手工机器人_让父母少弯腰的家务神器——追觅扫拖机器人慧目F9评测...
- 02-linux安装nodejs
- bat脚本——提取多个文件夹到指定路径
- TADF的发展史前景概念,热活化延迟荧光(TADF)材料的未来发展
- 手机六大操作系统优缺点比较
- 【简单的密码生成器】
- 梯度grad公式_FLAC3D梯度计算详解
- 医药公司协同电子商务系统
- android 高德地图 删除多边形,高德地图多边形覆盖物添加、获取、删除
- [转载] 七龙珠第一部——第041话 玛斯鲁塔的毁灭
- “无人驾驶汽车系统入门”博客专栏
- 《git-修改.gitignore后使其配置生效方法》---记录几个命令而已
- 反射阵天线(Reflectarray Antenna)设计方法简述
热门文章
- c语言人工智能程序,怎么程序编程语言 怎么用C语言编写人工智能程序?
- ftell函数使用注意事项
- Pspice17.2安装教程
- 抖音超火的网页表白代码大全(浪漫的html表白源代码)
- 高等数学在计算机中的应用论文1500字,大学高等数学论文范文
- 求相似三角形的几种方法,相似三角形算法有哪些
- 下雪软件_Excel下雪天
- 破解百度空间、新浪相册、网易、搜狐等博客图片防盗链的方法
- Unity3D 中的定制特性以及简单的编辑器扩展案例(1)
- 反三角函数在线计算机,arcsin计算器(反三角函数计算器在线)