importjava.util.Properties;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importcom.jcraft.jsch.Channel;importcom.jcraft.jsch.ChannelSftp;importcom.jcraft.jsch.JSch;importcom.jcraft.jsch.Session;/*** @description SFTP工具
*@authorLuxh*/
public classSFTPUtils {private static final Logger Log = LoggerFactory.getLogger(SFTPUtils.class);/**FTP协议*/
private static final String FTP_PROTOCOL = "sftp";/*** 获取session
*@paramhost
*@paramport
*@paramusername
*@parampassword
*@return
*/
public static Session getSession(String host, intport, String username, String password) {
Session session= null;try{
Log.info("init session...");
JSch jsch= newJSch();
session=jsch.getSession(username, host, port);
session.setPassword(password);
Properties config= newProperties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
Log.info("init session successful");
}catch(Exception e) {
Log.error("init session failed");
}returnsession;
}/*** 获取 ChannelSftp
*@paramsession
*@return
*/
public staticChannelSftp 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");
}returnsftp;
}/*** 上传
*@paramsrc 源文件路径
*@paramdst 目标文件路径
*@paramsftp*/
public static voidupload(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");
}
}/*** 下载
*@paramsrc 要下载的文件
*@paramdst 存放路径
*@paramsftp*/
public static voiddownload(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");
}
}/*** 删除
*@parampath 要删除的文件路径
*@paramsftp*/
public static voiddelete(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");
}
}/*** 关闭连接
*@paramsession
*@paramsftp*/
public static voidclose(Session session, ChannelSftp sftp){if(sftp != null) {
sftp.disconnect();
Log.info("ChannelSftp disconnect");
}if(session != null) {
session.disconnect();
Log.info("Session disconnect");
}
}
}