首页 > 代码库 > JSch - Java实现的SFTP(文件上传详解篇)
JSch - Java实现的SFTP(文件上传详解篇)
http://www.byywee.com/page/M0/S755/755589.html
本文只介绍如何应用JSch实现的SFTP功能。
SFTP是Secure File Transfer Protocol的缩写,安然文件传送和谈。可认为传输文件供给一种安然的加密办法。SFTP 为 SSH的一部份,是一种传输文件到办事器的安然体式格式。SFTP是应用加密传输认证信息和传输的数据,所以,应用SFTP是很是安然的。然则,因为这种传输体式格式应用了加密/解密技巧,所以传输效力比通俗的FTP要低得多,若是您对收集安然性请求更高时,可以应用SFTP庖代FTP。(来自百度的申明)
要应用JSch,须要下载它的jar包,请从官网下载它:http://www.jcraft.com/jsch/
ChannelSftp类是JSch实现SFTP核心类,它包含了所有SFTP的办法,如:
put(): 文件上传
get(): 文件下载
cd(): 进入指定目次
ls(): 获得指定目次下的文件列表
rename(): 重定名指定文件或目次
rm(): 删除指定文件
mkdir(): 创建目次
rmdir(): 删除目次
等等(这里省略了办法的参数,put和get都有多个重载办法,具体请看源代码,这里不一一列出。)
JSch支撑三种文件传输模式:
OVERWRITE | 完全覆盖模式,这是JSch的默认文件传输模式,即若是目标文件已经存在,传输的文件将完全覆盖目标文件,产生新的文件。 |
RESUME | 恢复模式,若是文件已经传输一项目组,这时因为收集或其他任何原因导致文件传输中断,若是下一次传输雷同的文件, 则会从上一次中断的处所续传。 |
APPEND | 追加模式,若是目标文件已存在,传输的文件将在目标文件后追加。 |
创建ChannelSftp对象 |
编写一个对象类,按照ip,用户名及暗码获得一个SFTP channel对象,即ChannelSftp的实例对象,在应用法度中就可以应用该对象来调用SFTP的各类操纵办法。
SFTPChannel.java
1 package com.longyg.sftp; 2 3 4 5 import java.util.Map; 6 7 import java.util.Properties; 8 9 10 11 import org.apache.log4j.Logger; 12 13 14 15 import com.jcraft.jsch.Channel; 16 17 import com.jcraft.jsch.ChannelSftp; 18 19 import com.jcraft.jsch.JSch; 20 21 import com.jcraft.jsch.JSchException; 22 23 import com.jcraft.jsch.Session; 24 25 26 27 public class SFTPChannel { 28 29 Session session = null; 30 31 Channel channel = null; 32 33 34 35 private static final Logger LOG = Logger.getLogger(SFTPChannel.class.getName()); 36 37 38 39 public ChannelSftp getChannel(Map<String, String> sftpDetails, int timeout) throws JSchException { 40 41 42 43 String ftpHost = sftpDetails.get(SFTPConstants.SFTP_REQ_HOST); 44 45 String port = sftpDetails.get(SFTPConstants.SFTP_REQ_PORT); 46 47 String ftpUserName = sftpDetails.get(SFTPConstants.SFTP_REQ_USERNAME); 48 49 String ftpPassword = sftpDetails.get(SFTPConstants.SFTP_REQ_PASSWORD); 50 51 52 53 int ftpPort = SFTPConstants.SFTP_DEFAULT_PORT; 54 55 if (port != null && !port.equals("")) { 56 57 ftpPort = Integer.valueOf(port); 58 59 } 60 61 62 63 JSch jsch = new JSch(); // 创建JSch对象 64 65 session = jsch.getSession(ftpUserName, ftpHost, ftpPort); // 按照用户名,主机ip,端口获取一个Session对象 66 67 LOG.debug("Session created."); 68 69 if (ftpPassword != null) { 70 71 session.setPassword(ftpPassword); // 设置暗码 72 73 } 74 75 Properties config = new Properties(); 76 77 config.put("StrictHostKeyChecking", "no"); 78 79 session.setConfig(config); // 为Session对象设置properties 80 81 session.setTimeout(timeout); // 设置timeout时候 82 83 session.connect(); // 经由过程Session建树链接 84 85 LOG.debug("Session connected."); 86 87 88 89 LOG.debug("Opening Channel."); 90 91 channel = session.openChannel("sftp"); // 打开SFTP通道 92 93 channel.connect(); // 建树SFTP通道的连接 94 95 LOG.debug("Connected successfully to ftpHost = " + ftpHost + ",as ftpUserName = " + ftpUserName 96 97 + ", returning: " + channel); 98 99 return (ChannelSftp) channel;100 101 }102 103 104 105 public void closeChannel() throws Exception {106 107 if (channel != null) {108 109 channel.disconnect();110 111 }112 113 if (session != null) {114 115 session.disconnect();116 117 }118 119 }120 121 }
JSch - Java实现的SFTP(文件上传详解篇)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。