1、JSch开发包下载

http://www.jcraft.com/jsch/

目前最新版本为:jsch-0.1.51

2、简单例子,列出指定目录下的文件列表

import java.util.Properties;
import java.util.Vector;import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;public class Demo003 {/*** @param args*/public static void main(String[] args) throws Exception{JSch jsch = new JSch();Session session = jsch.getSession("cmb", "localhost");session.setPassword("cmb123");Properties config = new Properties();config.put("StrictHostKeyChecking", "no");session.setConfig(config);session.connect();ChannelSftp channelSftp = (ChannelSftp)session.openChannel("sftp");channelSftp.connect();channelSftp.setFilenameEncoding("gbk");Vector vector  = channelSftp.ls("/");try{for(Object obj :vector){if(obj instanceof com.jcraft.jsch.ChannelSftp.LsEntry){String fileName = ((com.jcraft.jsch.ChannelSftp.LsEntry)obj).getFilename();System.out.println(fileName);}}}finally{channelSftp.quit();session.disconnect();}}}

3、JSch实现SFTP功能一些主要类的介绍

1)JSch 类

2)Session 会话对象类

 

3)ChannelSFTP类

ChannelSFTP类是JSch实现SFTP核心类,它提供了一些SFTP常见的操作方法,如下

方法名 方法说明
put()    文件上传
get()  文件下载
cd()    进入指定目录
ls()    得到指定目录下的文件列表
rename()  重命名(移动)指定文件或目录
rm()    删除指定文件
mkdir() 创建目录
rmdir() 删除目录(只允许删除空目录)

注:以上这些方法都有很多重载方法

4)SftpProgressMonitor 传输进度监控类

5)LsEntry 可以认为是文件服务器上的文件条目信息,把包含文件或者目录相关属性 。ls命令返回的Vector中的就是LsEntry对象列表

4、SFTP文件传输的实现步骤

//1、创建JSch类,好比是FlashFXP工具

JSch jsch = new JSch();

//2、创建本次的文件传输会话对象,并连接到SFTP服务器。它好比是通过FlashFXP工具连接到SFTP服务器

session = jsch.getSession(username, host, port);

session.setPassword(passwd);

Properties config = new Properties();

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

session.setConfig(config);

session.connect();

try{

//3、在该session会话中开启一个SFTP通道,之后就可以在该通道中进行文件传输了

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

channelSftp.connect();

}catch(Exception e){

e.printStackTrace();

disConnect();

throw e;

}

//4、进行文件传输操作:put()、get()....

channelSftp.put(...)

//5、操作完毕后,关闭通道并退出本次会话

if(channelSftp!=null && channelSftp.isConnected()){

channelSftp.disconnect();

}

if(session!=null && session.isConnected()){

session.disconnect();

}

5、JSch中文乱码处理

     使用jsch-0.1.51进行SFTP文件传输时,对中文处理会出现乱码,并且也无法通过setFileNameEncoding()方法来设置编码。

     解决方案:

         下载jsch-0.1.51源代码,在ChannelSFTP.java文件中找到SENDINIT( )方法,修改红色部分的内容

private void sendINIT() throws Exception {

this.packet.reset();

putHEAD((byte)1, 5);

this.buf.putInt(3);   //修改为  this.buf.putInt(2);

getSession().write(this.packet, this, 9);

}

然后编译并更改jar中的对应class文件即可。

6、ChannelSftp类的主要API说明如下:

太多就不贴了。。。。

本文转自:http://www.cnblogs.com/itmanxgl/p/fe5d33512609fe540eb08a76e3c4db3a.html?utm_source=tuicool&utm_medium=referral

感谢作者分享!

转载于:https://blog.51cto.com/chengxuyuan/1734965

SFTP例子2----使用JSch实现SFTP文件传输相关推荐

  1. sftp api java_SFTP例子2----使用JSch实现SFTP文件传输

    1.JSch开发包下载 目前最新版本为:jsch-0.1.51 2.简单例子,列出指定目录下的文件列表import java.util.Properties; import java.util.Vec ...

  2. sftp api java_使用JSch实现SFTP文件传输

    1.JSch开发包下载 目前最新版本为: jsch - 0.1.51 2.简单例子,列出指定目录下的文件列表 import  java.util.Properties; import  java.ut ...

  3. 使用sftp在客户端与服务器之间进行文件传输

    知识点:sftp 步骤: 一. 登录服务器 使用命令格式:sftp 服务器主机名 二. 在客户端与服务器之间进行文件传输 命令put: 上传到服务器 put haha.txt 命令get: 下载到客户 ...

  4. SFTP在Linux和window下的文件传输

    使用SecureCRT的SFTP在WINDOWS与LINUX之间传输文件 参考文献: http://ice-k.iteye.com/blog/1068275 http://www.cnblogs.co ...

  5. c++语言 tcp例子,C++中TCP通信实现文件传输

    作为Computer networks课程的一个project,我们需要实现用TCP在mininet中client和server的相互通信,需要能够传输文本文件,binary file 和image ...

  6. 【传输文件】文件传输协议FTP、SFTP和SCP

    网络通信协议分层 应用层: HTTP(Hypertext Transfer Protocol 超文本传输协议,显示网页) DNS(Domain Name System) FTP(File Transf ...

  7. 大数据传输,文件传输的专业解决方案!

    常见的文件传输的方法主要有以下几种: 1.FTP(File Transfer Protocol):命令使用文件传输协议.在本地主机和远程主机之间或者在两个远程主机之间进行文件传输.FTP没有数据压缩的 ...

  8. jsch 移动服务器上文件,使用JSch实现SFTP文件传输

    1.JSch开发包下载 目前最新版本为: jsch - 0.1.51 2.简单例子,列出指定目录下的文件列表 import  java.util.Properties; import  java.ut ...

  9. 使用Jsch通过SFTP下载ZIP文件并解压

    ZIP模块用的并不是java.util下的,而是apache的commons-compress,用apache的库可以避免很多因为操作系统问题造成的编码异常. 大概流程是这样的:本地通过sftp访问服 ...

最新文章

  1. Web 开发与设计之 Google 兵器谱
  2. Win 7 隐藏小功能——屏幕录制
  3. 移动数据分析服务使用教程
  4. 智能车竞赛技术报告 | 智能车视觉 - 青岛工学院 - 青工战斗
  5. 【Python基础】在pandas中使用数据透视表
  6. 图像相似度算法的C#实现及测评
  7. Junit 与 powermock 结合执行过程源码阅读
  8. 证明randomized quicksort的平均running time为nlgn 的数学过程
  9. hiho一下 第173周
  10. 【Linux】Linux备份与恢复——dump和restore命令
  11. Linux/Unix文件系统索引节点浅析
  12. 弹性系数和线径的计算公式_压缩弹簧弹力、刚度计算公式
  13. 计算机指纹驱动程序,解决Windows 7系统本本指纹识别器问题
  14. 丝杠螺母传动机构设计
  15. stupid代码提交到github
  16. 电脑4g内存C语言CAD够用吗,电脑4g内存够用吗-电脑4g内存是否够用详情介绍 - 系统家园...
  17. 数字图像处理 检测护照图像中的机器可读区域
  18. 聚美优品API 根据关键词取商品列表 Onebound电商平台数据
  19. 胡歌官宣生女,胡椒粉们真为他高兴,人生最顶级的能力是【涅槃重生】的力量
  20. 页面ifream固定分辨率展示并适配所有分辨率方法

热门文章

  1. Kaggle比赛源代码和讨论的收集整理
  2. tensorflow.GraphDef was modified concurrently during serialization
  3. 什么原因导致芯片短路_血压中的低压高是什么原因导致的?会导致什么疾病?...
  4. linux下socket上限,[100分]高分求关于linux socket上限解决方案
  5. 最短路径(Dijkstra、Bellman-Ford和SPFA算法)
  6. Java获取当前线程的名字以及为线程命名
  7. DDD领域驱动设计---战略设计(包括四色原型建模)
  8. 配置Linux的时钟同步
  9. 关于OPC自动化接口编程(OPCDAAuto.dll)几点注意问题
  10. 若依前后端分离版实现基于el-tree实现选中部门树节点同步选中多选框的操作