Jsch是什么?

JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。你可以将它的功能集成到你自己的 程序中。同时该项目也提供一个J2ME版本用来在手机上直连SSHD服务器

Jsch功能很强大,博主这里主要用来做文件操作

怎么使用?

添加jar依赖

com.jcraft

jsch

0.1.53

我把我的SftpUtil贴下面了,注释还算清楚

/**

* Content :sftp协议文件上传下载

* Created by kl on 2016/5/6.

*/

public class SftpUtil {

/**

* 上传文件到指定服务器

* @param ip 连接ip

* @param user 用户名

* @param psw 密码

* @param port 端口 <=0 为默认端口

* @param fielPath 上传的服务器路径

* @param serverFileName 服务器保存的文件名

* @param instream 要上传的文件流

* @throws Exception

*/

public static void sftpFileUpload(String ip,int port, String user, String psw, String fielPath,String serverFileName,InputStream instream) throws Exception {

Session session =getSession( ip, user, psw, port);

Channel channel = null;

try {

//创建sftp通信通道

channel = (Channel) session.openChannel("sftp");

channel.connect(1000);

ChannelSftp sftp = (ChannelSftp) channel;

//进入服务器指定的文件夹

sftp.cd(fielPath);

OutputStream outstream = sftp.put(serverFileName);

byte b[] = new byte[1024*200];//每次传输200k

int n;

while ((n = instream.read(b)) != -1) {

outstream.write(b, 0, n);

}

outstream.flush();

outstream.close();

instream.close();

} catch (Exception e) {

e.printStackTrace();

} finally {

session.disconnect();

if (channel!=null)channel.disconnect();

}

}

/**

* 从指定服务器下载文件到本地

* @param ip 连接ip

* @param user 用户名

* @param psw 密码

* @param port 端口 <=0 为默认端口

* @param fielPath 服务器文件路径

* @param serverFileName 要下载的文件名

* @param outputStream 输出到本地的文件流

* @throws Exception

*/

public static void sftpFileDownload(String ip,int port, String user, String psw, String fielPath,String serverFileName,OutputStream outputStream) throws Exception {

Session session =getSession( ip, user, psw, port);

Channel channel = null;

try {

//创建sftp通信通道

channel = (Channel) session.openChannel("sftp");

channel.connect(1000);

ChannelSftp sftp = (ChannelSftp) channel;

//进入服务器指定的文件夹

sftp.cd(fielPath);

sftp.get(serverFileName,outputStream);

} catch (Exception e) {

e.printStackTrace();

} finally {

session.disconnect();

if (channel!=null)channel.disconnect();

}

}

/**

* 删除服务器指定文件

* @param ip 连接ip

* @param user 用户名

* @param psw 密码

* @param port 端口 <=0 为默认端口

* @param fielPath 服务器文件路径

* @param serverFileName 要删除的文件名

* @throws Exception

*/

public static void sftpFileDelete(String ip,int port, String user, String psw, String fielPath,String serverFileName) throws Exception {

Session session =getSession( ip, user, psw, port);

Channel channel = null;

try {

//创建sftp通信通道

channel = (Channel) session.openChannel("sftp");

channel.connect(1000);

ChannelSftp sftp = (ChannelSftp) channel;

//进入服务器指定的文件夹

sftp.cd(fielPath);

sftp.rm(serverFileName);

} catch (Exception e) {

e.printStackTrace();

} finally {

session.disconnect();

if (channel!=null)channel.disconnect();

}

}

/**

* 查看指定目录所有文件

* @param ip

* @param user

* @param psw

* @param port

* @param fielPath

* @throws Exception

*/

public static Vector seeServerFileList(String ip, int port,String user, String psw, String fielPath)throws Exception{

Session session =getSession( ip, user, psw, port);

Channel channel = null;

Vector v=null;

try {

//创建sftp通信通道

channel = (Channel) session.openChannel("sftp");

channel.connect(1000);

ChannelSftp sftp = (ChannelSftp) channel;

//进入服务器指定的文件夹

sftp.cd(fielPath);

//列出服务器指定的文件列表

v = sftp.ls(fielPath);

} catch (Exception e) {

e.printStackTrace();

} finally {

session.disconnect();

if (channel!=null)channel.disconnect();

}

return v;

}

/**

* 连接服务器

* @param ip 服务器地址

* @param user 用户名

* @param psw 密码

* @param port 连接端口

* @return

* @throws Exception

*/

public static Session getSession(String ip, String user, String psw, int port)throws Exception{

Session session = null;

JSch jsch = new JSch();

if (port <= 0) {

//连接服务器,采用默认端口

session = jsch.getSession(user, ip);

} else {

session = jsch.getSession(user, ip, port);

}

//如果服务器连接不上,则抛出异常

if (session == null) {

throw new Exception("sftp session is null");

}

session.setPassword(psw);//设置密码

//设置登陆超时时间

session.connect(30000);//30s

return session;

}

}

java jsch下载文件,JSch使用sftp协议实现服务器文件上传下载操作相关推荐

  1. FTP协议中的登录 上传 下载 新建目录 删除目录 的wireshark包分析(一文看完TCP包分析,附源文件,ppt,操作视频)

    ​​​​​​​目录 一原理 二.FTP登录 三.FTP下载 四.FTP上传 五.FTP新建目录 六.FTP删除目录 一原理 前言:TCP/IP四层模型和OSI模型对照,以及FTP在模型中的位置. • ...

  2. Linux服务器怎样上传下载文件

    SFTP 在计算机领域,SSH文件传输协议(英语:SSH File Transfer Protocol,也称Secret File Transfer Protocol,中文:安全文件传送协议,英文:S ...

  3. nginx服务器实现上传下载文件

    作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 参考 Nginx文件服务器 使 ...

  4. 推荐2个命令快速在本地和服务器之间上传下载文件

    FileZila是一个常用的在服务器和本地电脑之间传输大文件的工具,可以断点续传.断开重连,在传输大数据时很方便.但偶尔我们也希望能下载单个或多个小文件在本地修改或查看,或上传单个小文件,有没有不需要 ...

  5. ftp文件推送 linux_Linux 终端访问 FTP 及 上传下载 文件

    今天同事问我一个问题,在Linux 下访问FTP,并将文件上传上去. 我之前一直是用WinSCP工具的. 先将文件从linux copy到windows下,然后在传到ftp上.google 一下. 方 ...

  6. 使用securecrt在本地与服务器之间上传下载数据

    第一种方式: 1.首先安装:apt install lrzsz lrzsz是一款在Linux里可代替ftp上传和下载的程序. 2.设置上传和下载目录:选项-->会话选项-->X/Y/Zmo ...

  7. XManager5 ssh远程登录服务器工具xshell ,服务器资源上传下载工具xftp

    XManager5 网盘下载 链接:https://pan.baidu.com/s/1t1wL3xnsucoP6hDnP30INA 提取码:9cq3 安装后 打开 ssh 远程登录服务器工具 xshe ...

  8. linux搭建ftp服务器可上传下载,通过linux系统搭建ftp服务然后使用filezilla客户端进行上传下载...

    1.         准备环境 一台linux主机作为ftp服务器(这里以centos7.2系统为例),一台Windows系统的主机作为客户端 2.         服务端配置: (1)   下载vs ...

  9. 使用PSFTP进行Windows与Linux远程服务器的上传下载

    1.下载: 2.使用 2.1 双击即可使用 2.2 使用规范 我说点常用的,我们用PSFTP主要也就是上传和下载.PSFTP是PuTTY SFTP客户端,用于本地与服务器间安全传输文件(使用SSH连接 ...

最新文章

  1. 吴恩达老师深度学习视频课笔记:超参数调试、Batch正则化和程序框架
  2. 关于Struts2的通配方法、转发重定向
  3. 计算机检索高考投档线,投档分数线是什么意思 2018各大学投档线是多少
  4. 1400协议是什么和28181区别_1400张拆解案例,够你PPT拆解学习好几遍了!
  5. gradient设置上下渐变_PaintCode Mac使用教程:如何使用渐变色
  6. 奇异值分解和非负矩阵分解
  7. electron build报错,nsis下载不下来的情况
  8. 单场淘汰制场次计算方法_淘汰赛、单循环赛和双循环赛的计算方法分别是什么?...
  9. GitHub 爬虫项目
  10. Hadoop 3.X, 纠删码
  11. 公司发展事件时间轴jsjs特效
  12. win 2008R2启用TLS 1.2 Windows 2008/2008R2手动启用TLS1_2协议教程
  13. SecureCRT注册机使用方法
  14. 计算机图形学之光线跟踪算法的研究与实现2017年我的优秀毕业论文
  15. httpclient报错:Invalid use of BasicClientConnManager: connection still allocated. Make sure to release
  16. js判断android手机浏览器,【笔记】js判断移动端系统及浏览器
  17. weekofyear跨年问题
  18. 案例爬取(其一):url获取
  19. javascript:history.go(-1)
  20. 脑右下角出现金色小锁,进入系统缓慢,点击应用及各种操作反应缓慢或无反应,严重者电脑不断重启

热门文章

  1. Idea更改缓存和插件使用
  2. 小程序二维码识别度低的问题
  3. 地形编辑器【前缀和】
  4. 23通信保研经历 | 211上岸北航
  5. 查看PostgreSQL的端口,并修改
  6. python实现即时通讯后端思路整理
  7. 电子商务中的网上支付解决方案
  8. CF923B Producing Snow 堆/优先队列
  9. 2D检测经典算法框架介绍
  10. linux 下tomcat卸载和安装