channelsftp的put_JSCH实现文件上传下载至sftp服务器

该博客介绍了如何使用Java的JSCH库实现SFTP连接,包括建立连接、上传文件、下载文件及验证服务器路径的方法。示例代码展示了SftpConnect类的实现,该类提供了上传和下载文件的功能。
摘要由CSDN通过智能技术生成

import com.jcraft.jsch.*;importjava.io.InputStream;importjava.util.Properties;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;/***@authorfc

*@versionV1.0

* @Title SFTPConnect

* @Package com.jsch

* @Descript :TODO()

* @date : 2018/8/30 下午3:50*/

public classSftpConnect {privateString user;privateString password;privateString host;private intport;privateChannelSftp channelSftp;privateSession session;private Logger logger = LoggerFactory.getLogger(SftpConnect.class);private final String NO_SUCH_FILE = "No such file";public SftpConnect(String user, String password, String host, intport) {this.user =user;this.password =password;this.host =host;this.port =port;

}privateChannelSftp connect(){

JSch jSch=newJSch();try{

session=jSch.getSession(user,host,port);

Properties sshConfig= newProperties();

sshConfig.put("StrictHostKeyChecking", "no");

session.setPassword(password);

session.setConfig(sshConfig);

session.connect();

channelSftp= (ChannelSftp) session.openChannel("sftp");

channelSftp.connect();

}catch(JSchException e) {return null;

}returnchannelSftp;

}/*** 断开连接*/

private voiddisconnect() {

channelSftp.disconnect();

session.disconnect();

}public booleanupLoadFile(String path,String filename, InputStream is){if(channelSftp == null){

logger.debug("初始化sftp连接:连接地址:{}",host);

connect();

logger.trace("sftp连接初始化完成:{}",host);

}try{

validatePath(path);

channelSftp.put(is,filename);

disconnect();

}catch(SftpException e) {

logger.error("文件上传失败:\n{}",e);return false;

}return true;

}/*** 验证服务器文件夹路径,如不存在则新建

*@parampath*/

private void validatePath(String path) throwsSftpException {try{

channelSftp.lstat(path);

channelSftp.cd(path);

}catch(SftpException e) {if(NO_SUCH_FILE.equals(e.getMessage())){

logger.debug("{} 不存在,创建该路径",path);

String[] paths= path.split("/");for(String p : paths){try{

channelSftp.cd(p);

}catch(SftpException e1) {

channelSftp.mkdir(p);

channelSftp.cd(p);

}

}

}else{throwe;

}

}

}/*** 下载文件

*@parampath

*@paramfilename

*@param: is

*@return

*/

publicInputStream downFile(String path,String filename){if(channelSftp == null){

logger.debug("初始化sftp连接:连接地址:{}",host);

connect();

logger.trace("sftp连接初始化完成:{}",host);

}try{

channelSftp.cd(path);

InputStream is=channelSftp.get(filename);

disconnect();returnis;

}catch(SftpException e) {return null;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值