文章目录

  • JSch使用介绍
  • 1. jar包下载
  • 2. 引入依赖
  • 3. 代码实现
  • 4. 验证

JSch使用介绍

JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。你可以将它的功能集成到你自己的程序中。

1. jar包下载

maven仓库:https://mvnrepository.com/artifact/com.jcraft/jsch/0.1.55

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

2. 引入依赖

<dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version>
</dependency>

3. 代码实现

public class SFTPChannelUtils {Session session = null;Channel channel = null;public ChannelSftp getChannelSftp() throws JSchException {// ssh服务器的IP、用户名、密码和端口String sftpHost = "101.200.149.*";String sftpUsername = "root";String sftpPassword = "******";int sftpPort = 22;JSch jsch = new JSch(); // 创建JSch对象session = jsch.getSession(sftpUsername, sftpHost, sftpPort);// 获取sesson对象session.setPassword(sftpPassword);// 设置sftp访问密码Properties config = new Properties();config.put("StrictHostKeyChecking", "no");session.setConfig(config);// 为session重新设置参数session.setTimeout(30000);// 设置超时session.connect();// 建立连接channel = session.openChannel("sftp"); // 打开sftp通道channel.connect();// 建立sftp通道连接return (ChannelSftp) channel;}public static void main(String[] args) {/*JSch支持三种文件传输模式:OVERWRITE 完全覆盖模式,这是JSch的 默认文件传输模式,即如果目标文件已经存在,传输的文件将完全覆盖目标文件,产生新的文件。RESUME 恢复模式,如果文件已经传输一部分,这时由于网络或其他任何原因导致文件传输中断,如果下一次传输相同的文件,则会从上一次中断的地方续传。APPEND 追加模式,如果目标文件已存在,传输的文件将在目标文件后追加。*/String srcFile = "E:\\picture.png";String destFile = "/root/data/picture/picture.png";try {SFTPChannelUtils sftpChannel = new SFTPChannelUtils();ChannelSftp channel = sftpChannel.getChannelSftp();OutputStream out = channel.put(destFile, ChannelSftp.OVERWRITE);  // 这里使用OVERWRITE模式// 默认使用OVERWRITE模式byte[] buff = new byte[1024 * 256]; // 设定每次传输的数据块大小为256KBint read;if (out != null) {System.out.println("Start to read input stream");InputStream is = new FileInputStream(srcFile);do {read = is.read(buff, 0, buff.length);if (read > 0) {out.write(buff, 0, read);}out.flush();} while (read >= 0);}System.out.println("传输完成");channel.quit();sftpChannel.closeChannel();} catch (Exception e) {e.printStackTrace();}}public void closeChannel() {if (channel != null) {channel.disconnect();}if (session != null) {session.disconnect();}System.out.println("关闭");}
}

4. 验证

从代码中可以看出我们将E:\\picture.png传输到了/root/data/picture/picture.png

成功!
备注:JSch还能实现文件夹的传输,大家可以自行测试。


微信公众号先已开通,搜索 “江小南和他的小伙伴们” 就能找到我哦,各位小伙伴们可以关注一下,文章会进行同步更新,方便查看哦。

【实用技巧篇】JSch使用介绍,实用JSch实现文件传输相关推荐

  1. 软件测试中python实用技巧,精选22个Python实用技巧,秀技能必备这份技术列表!...

    被人工智能捧红的 Python 已是一种发展完善且非常多样化的语言,其中肯定有一些你尚未发现的功能.那么今天或许我能够让你学到一些新技巧. Python的发展: "人生苦短,我用 Pytho ...

  2. WinRAR实用技巧:一个设置,可能让多文件压缩变得更小!

    前言 WinRAR是非常常用的压缩软件,后缀名 .rar 的文件,就是它压缩之后的文件 但是,大多数人都是使用它默认的设置,最多也就在"压缩方式"那里选择一下"最好&qu ...

  3. 实用技巧分享——用Python解压复杂zip文件

    使用过Python中的标准库zipfile解压过zip格式压缩包的朋友们,可能遇到过,当压缩文件中的目录或文件名中包含中文等常见unicode字符时,典型如下面的例子: 使用zipfile的extra ...

  4. python实用技巧(四)

    Python实用技巧(一) python实用技巧(二) python实用技巧(三) python实用技巧(四) 排序后,最后k个元素,以逆序输出 >>> l = range(1, 6 ...

  5. python实用技巧(二)

    Python实用技巧(一) python实用技巧(二) python实用技巧(三) python实用技巧(四) code 解释 补充 list.reverse() 返回值类型为NoneType l.r ...

  6. python实用技巧(一)

    Python实用技巧(一) python实用技巧(二) python实用技巧(三) python实用技巧(四) 已知X是多维数组类型,则: X[:, v],表示的是truncate X中的一些列(对应 ...

  7. Spine 实用技巧大全

    Spine 实用技巧大全 文章目录 Spine 实用技巧大全 1.账号登出 log Out 2.Spine 如何调整帧速率 3.Spine 如何导出(透明度有问题,图片有黑边的,看这个) 4.Spin ...

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

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

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

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

最新文章

  1. Spark机器学习(8):LDA主题模型算法
  2. python中语法错误-Python3 错误和异常
  3. CORE ANIMATION的学习备忘录
  4. 有关logistic(sigmoid)函数回归
  5. js php调用webservice,js跨域调用WebService的使用方法
  6. 系统带你学习 WebAPIs 第四讲
  7. c语言按照姓名查询员工信息,输入10个职工信息,按号码大小排序,再使用查找函数找职工的姓…...
  8. shell函数可接受不同参数
  9. 虚拟化桌面初始化配置处理
  10. 【kafka】google提供的一些好用的并发工具类
  11. java(16) - 泛型
  12. MongoDB查询及索引优化
  13. mysql开发与运维_专业的MySQL开发规范
  14. ASUS TUF Gaming B460M PLUS+RX570+BCM94360CD黑苹果EFI引导文件
  15. python和前端哪个好_web前端和python学哪个出来工资高?
  16. Matlab画图,坐标轴范围设置和间隔设置
  17. 虚拟示波器-开天斧-STC8H8K64U核心功能实验板测试
  18. backgroundLinearGradient线性渐变制作折角效果
  19. 塔罗牌第五张是什么牌_塔罗占卜你是一个什么样的人?
  20. d盘不见了 计算机打不开,d盘不见了怎么办 d盘不见了原因及解决方法

热门文章

  1. 衡山德华盛星源高中2021高考成绩查询,十年磨砺树凌云壮志, 今朝亮剑必蟾宫折桂——德华盛星源高中召开2021届平安高考暨考前动员大会...
  2. 东莞1号线汽车总站至滨江体育馆站右线盾构始发
  3. 其实 家用计算机与普通计算机,拆解服务器,看看与普通计算机到底有什么区别?...
  4. 西部数码的合作伙伴~~
  5. 突破重围,攻“新”为上!凯里亚德与郁锦香酒店以创新势能获投资者青睐
  6. segmentation fault (SIGSEGV) 定位方法
  7. linux进程收到sigsegv,Linux上的Ada程序:由于缺少文件而导致SIGSEGV?
  8. HDFS文件读取流程
  9. pcieport 0000:00:1.0:AER: PCIe Bus Error: severity=Corrected--解决ubuntu磁盘爆满导致无法开机问题
  10. PHP联系人表格,基本的PHP联系人表格,仅接收电子邮件但无消息