1、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说明如下:

方法名

方法说明

public void put(String src, String dst)

将本地文件名为 src 的文件上传到目标服务器,目标文件名为 dst ,若 dst 为目录,则目标文件名将与src 文件名相同。采用默认的传输模式: OVERWRITE

public void put(String src, String dst, int mode)

将本地文件名为 src 的文件上传到目标服务器,目标文件名为 dst ,若 dst 为目录,则目标文件名将与src 文件名相同。指定文件传输模式为 mode ( mode 可选值为:ChannelSftp.OVERWRITE ,ChannelSftp.RESUME ,ChannelSftp.APPEND )。

public void put(String src, String dst, SftpProgressMonitor monitor)

将本地文件名为 src 的文件上传到目标服务器,目标文件名为 dst ,若 dst 为目录,则目标文件名将与src 文件名相同。采用默认的传输模式: OVERWRITE ,并使用实现了 SftpProgressMonitor 接口的monitor 对象来监控文件传输的进度。

public void put(String src, String dst,SftpProgressMonitor monitor, int mode)

将本地文件名为 src 的文件上传到目标服务器,目标文件名为 dst ,若 dst 为目录,则目标文件名将与src 文件名相同。指定传输模式为mode, 并使用实现了SftpProgressMonitor 接口的monitor 对象来监控文件传输的进度。

public void put(InputStream src, String dst)

将本地的 input stream 对象 src 上传到目标服务器,目标文件名为dst , dst 不能为目录。采用默认的传输模式: OVERWRITE

public void put(InputStream src, String dst, int mode)

将本地的 input stream 对象 src上传到目标服务器,目标文件名为 dst , dst 不能为目录。指定文件传输模式为mode

public void put(InputStream src, String dst, SftpProgressMonitor monitor)

将本地的 input stream 对象 src 上传到目标服务器,目标文件名为dst , dst 不能为目录。采用默认的传输模式: OVERWRITE 。并使用实现了 SftpProgressMonitor接口的 monitor 对象来监控传输的进度。

public void put(InputStream src, String dst,SftpProgressMonitor monitor, int mode)

将本地的 input stream 对象 src 上传到目标服务器,目标文件名为dst , dst 不能为目录。指定文件传输模式为 mode 。并使用实现了SftpProgressMonitor 接口的monitor 对象来监控传输的进度。

public OutputStream put(String dst)

该方法返回一个输出流,可以向该输出流中写入数据,最终将数据传输到目标服务器,目标文件名为dst , dst 不能为目录。采用默认的传输模式: OVERWRITE

public OutputStream put(String dst, final int mode)

该方法返回一个输出流,可以向该输出流中写入数据,最终将数据传输到目标服务器,目标文件名为 dst , dst不能为目录。指定文件传输模式为 mode

public OutputStream put(String dst, final SftpProgressMonitor monitor, final int mode)

该方法返回一个输出流,可以向该输出流中写入数据,最终将数据传输到目标服务器,目标文件名为dst , dst 不能为目录。指定文件传输模式为 mode 。并使用实现了SftpProgressMonitor 接口的monitor 对象来监控传输的进度。

public OutputStream put(String dst, final SftpProgressMonitor monitor, final int mode, long offset)

该方法返回一个输出流,可以向该输出流中写入数据,最终将数据传输到目标服务器,目标文件名为dst , dst 不能为目录。指定文件传输模式为 mode 。并使用实现了SftpProgressMonitor 接口的monitor 对象来监控传输的进度。offset 指定了一个偏移量,从输出流偏移 offset 开始写入数据。

get(String src, String dst)

下载文件到本地, src 为目标服务器上的文件,不能为目录, dst 为本地文件路径。若 dst 为目录,则本地文件名与目标服务器上的文件名一样。

get(String src, String dst ,SftpProgressMonitor monitor)

同get(String src, String dst),只是该方法允许传入传输进度的监控对象monitor。

get(String src, String dst ,SftpProgressMonitor monitor ,int mode)

同 get(String src, String dst ,SftpProgressMonitor monitor) ,同时,该方法增加了 mode 参数,允许指定文件传输模式

rm(String path)

删除文件, path 不能为目录,删除目录使用 rmdir

rmdir(String path)

删除目录,但是只能删除空目录

rename(String oldpath, String newpath)

如果oldPath为目录,不要求目录必须为空

如果newpath为目录,则newpath必须不能存在,如果已经存在该目录,则会出现重名或者移动失败

1、重命名文件或者目录

2、移动文件或者目录

ls(String path)

列出指定目录下的所有文件和子目录。该方法返回 Vector 对象,该列表具体存放的是 LsEntry 对象

sftp api java_使用JSch实现SFTP文件传输相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. java jsch下载文件,JSch使用sftp协议实现服务器文件上传下载操作

    Jsch是什么? JSch 是SSH2的一个纯Java实现.它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等.你可以将它的功能集成到你自己的 程序中.同时该项目也提供一个J2 ...

最新文章

  1. python编程从入门到精通pdf-码哥—-Python从入门到精通(全60集),资源教程下载...
  2. 【Spring框架家族】SpringBoot自动配置基本实现
  3. afudos备份bios不动_AMI BIOS刷新程序AFUDOS操作说明及介绍-BIOS维修网站www.biosrepair.com...
  4. 同步异步网络搜集到的比喻
  5. 使用工厂模式与泛型对三层架构的每一层进行解耦
  6. JavaSE集合框架-01-集合框架体系及表数据结构
  7. 一款DYI动态桌面壁纸程序
  8. 硬件设计——一键开关机
  9. 安装Android Studio遇到的几个困难和解决办法
  10. python moving average_Python实现滑动平均(Moving Average)的代码教程
  11. 《禅与摩托车维修艺术》书摘
  12. 复旦大学有计算机网络专业,复旦大学自考本科计算机网络专业介绍
  13. 【EI会议分享】2022年第三届智能制造与自动化前沿国际会议(CFIMA 2022)
  14. 飞越650四轴无人机安装全程详解(多图)
  15. “收藏本站” 的代码
  16. 消费税简介、消费税税目 、消费税税率 、消费税计算、综合练习
  17. 苹果CMS V10仿韩剧TV主题模板源码 | 苹果CMS主题
  18. 网易七鱼之商城客服聊天-Poison
  19. 根据电话号码获得联系人头像
  20. Scratch案例—女巫跳小树

热门文章

  1. eclipse中选中一个单词 其他相同的也被选中 怎么设置
  2. 【三边定位】 演示程序V0.1
  3. 原生js实现选中所有的checkbox
  4. Only Link: Inheritance — private and protected inheritance in c++
  5. ubuntu classicmenu-indicator
  6. P1179: [Apio2009]Atm
  7. 关于ssh的一篇很好的文章
  8. js 实现网站来消息网站标题闪动提示 .
  9. FFmpeg — 屏幕录制器材
  10. 大数据之-Hadoop3.x_MapReduce_序列化案例FlowMapper---大数据之hadoop3.x工作笔记0098