详情请阅读原文
在其基础之上做了进一步的封装

 <!-- https://mvnrepository.com/artifact/com.jcraft/jsch -->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.54</version>
</dependency>

import com.jcraft.jsch.*; import java.util.Properties; public class SFTPChannel {
//ip地址
private String host;
//登录账号
private String username;
//登录密码
private String password;
//默认端口号
private int port = 22;
//默认过期时间
private int timeout = 60000;
private Session session = null;
private Channel channel = null; public SFTPChannel(String host, String username, String password) {
this.host = host;
this.username = username;
this.password = password;
} public SFTPChannel(String host, String username, String password, int port) {
this.host = host;
this.username = username;
this.password = password;
this.port = port;
} public SFTPChannel(String host, String username, String password, int port, int timeout) {
this.host = host;
this.username = username;
this.password = password;
this.port = port;
this.timeout = timeout;
} //创建连接
public ChannelSftp getChannel(SFTPChannel sftpChannel) throws JSchException {
// 创建JSch对象
JSch jSch = new JSch();
// 根据用户名,主机ip,端口获取一个Session对象
session = jSch.getSession(sftpChannel.getUsername(), sftpChannel.getHost(), sftpChannel.getPort());
// 设置密码
session.setPassword(sftpChannel.getPassword());
Properties properties = new Properties();
//主机公钥确认 无口令 SSH 登录(即通过客户端公钥认证),就可以直接连接到远程主机。
//这是基于 SSH 协议的自动化任务常用的手段
properties.put("StrictHostKeyChecking", "no");
// 为Session对象设置properties
session.setConfig(properties);
// 设置timeout时间
session.setTimeout(sftpChannel.getTimeout());
// 通过Session建立链接
session.connect();
// 打开SFTP通道
channel = session.openChannel("sftp");
// 建立SFTP通道的连接
channel.connect();
return (ChannelSftp) channel;
} //关闭连接
public void closeChannel() {
if (null != channel) {
channel.disconnect();
}
if (null != session) {
session.disconnect();
}
} public int getTimeout() {
return timeout;
} public void setTimeout(int timeout) {
this.timeout = timeout;
} public String getHost() {
return host;
} public void setHost(String host) {
this.host = host;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public int getPort() {
return port;
} public void setPort(int port) {
this.port = port;
}
}

使用示例

public static void main(String[] args) throws Exception {
SFTPChannel sftpChannel = new SFTPChannel("服务器ip", "root", "root");
//直接将本地文件名为src的文件上传到目标服务器,目标文件名为dst。
//(注:使用这个方法时,dst可以是目录,当dst是目录时,上传后的目标文件名将与src文件名相同)
String src = "D:\\project\\Rar.txt";
String dst = "/opt/csv/";
ChannelSftp channelSftp = sftpChannel.getChannel(sftpChannel);
System.out.println("创建链接");
channelSftp.put(src, dst, ChannelSftp.OVERWRITE);
System.out.println("上传文件成功");
//展示上传文件目录下的所有文件
Vector vector = channelSftp.ls(dst);
System.out.println(vector.toString());
//关闭连接
channelSftp.quit();
sftpChannel.closeChannel();
}

其他目录文件操作请看原文

Java远程连接服务器实现文件上传下载及目录操作的更多相关文章

  1. Java实现FTP批量大文件上传下载篇1

    本文介绍了在Java中,如何使用Java现有的可用的库来编写FTP客户端代码,并开发成Applet控件,做成基于Web的批量.大文件的上传下载控件.文章在比较了一系列FTP客户库的基础上,就其中一个比 ...

  2. xftp实现本地与服务器的文件上传下载(windows)

    背景: Jemter环境搭建,需上传下载服务器文件到aws服务器上,由于secureCRT的局限性它只支持pub格式的密钥,不支持pem格式密钥,xshell是支持pem格式的,所以尝试安装xshel ...

  3. Java实现FTP与SFTP文件上传下载

    添加依赖Jsch-0.1.54.jar <!-- https://mvnrepository.com/artifact/com.jcraft/jsch --> <dependency ...

  4. JAVA中使用FTPClient实现文件上传下载

    在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件 ...

  5. linux命令行模式下对FTP服务器进行文件上传下载

    参考源:点击这里查看   1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码 ...

  6. JAVA中使用FTPClient实现文件上传下载实例代码

    一.上传文件 原理就不介绍了,大家直接看代码吧 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...

  7. 基于 java 【Web安全】文件上传漏洞及目录遍历攻击

    前言:web安全之文件上传漏洞,顺带讲一下目录遍历攻击.本文基于 java 写了一个示例. 原理 在上网的过程中,我们经常会将一些如图片.压缩包之类的文件上传到远端服务器进行保存.文件上传攻击指的是恶 ...

  8. java中io流实现文件上传下载

    新建io.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" page ...

  9. vb.net FTP上传下载,目录操作

    https://blog.csdn.net/dzweather/article/details/51429107 FtpWebRequest与FtpWebResponse类用来与特定FTP服务器进行沟 ...

  10. Android与Asp.Net Web服务器的文件上传下载BUG汇总[更新]

    遇到的问题: 1.java.io.IOException: open failed: EINVAL (Invalid argument)异常,在模拟器中的sd卡创建文件夹和文件时报错 出错原因可能是: ...

随机推荐

  1. OLOR:已开源,向预训练权值对齐的强正则化方法 | AAAI 2024

    随着预训练视觉模型的兴起,目前流行的视觉微调方法是完全微调.由于微调只专注于拟合下游训练集,因此存在知识遗忘的问题.论文提出了基于权值回滚的微调方法OLOR(One step Learning, On ...

  2. 2024-07-27:用go语言,给定一个正整数数组,最开始可以对数组中的元素进行增加操作,每个元素最多加1。 然后从修改后的数组中选出一个或多个元素,使得这些元素排序后是连续的。 要求找出最多可以选

    2024-07-27:用go语言,给定一个正整数数组,最开始可以对数组中的元素进行增加操作,每个元素最多加1. 然后从修改后的数组中选出一个或多个元素,使得这些元素排序后是连续的. 要求找出最多可以选 ...

  3. Jmeter函数助手14-TestPlanName

    TestPlanName函数获取当前测试计划保存的文件名称.该函数没有参数,直接引用即可${__TestPlanName}.

  4. Springboot + Vue ElementUI 实现MySQL可视化

    一.功能展示: 效果如图: DB连接配置维护:   Schema功能:集成Screw生成文档,导出库的表结构,导出表结构和数据 表对象操作:翻页查询,查看创建SQL,生成代码 可以单个代码文件下载,也 ...

  5. 【Mybatis-Plus】02 Spring整合,基本CRUD

    创建非骨架普通Maven工程: 引入Spring & MybatisPlus的依赖坐标及其它持久层依赖: <properties> <spring.version>5. ...

  6. 【DataBase】SQL50 Training 50题训练

    原文地址: https://blog.csdn.net/xiushuiguande/article/details/79476964 实验数据 CREATE DATABASE IF NOT EXIST ...

  7. 训练人形机器人时如何收集人类行为数据 —— 通过人来训练机器人(真人实际演示动作)or 仿真环境自动生成 —— 哪种方式更优、更可行呢

    特斯拉的老马,搞的optimus人形机器人就是通过人来训练机器人(真人实际演示动作),但是未来使用仿真环境自动生成数据是否可行呢,NVIDIA的老黄在2024 GTC上是大力推出自家的GROOT平台, ...

  8. 服务器上运行 xvbf 时报错 —— Unknown encoder 'libx264'

    解决方法: 使用conda环境(不具体交代) conda install ffmpeg 成功运行:

  9. LeetCode279:完全平方数——动态规划算法——python语言

    无意间看到了这么一个题: LeetCode279:完全平方数,动态规划解法超过46%,作弊解法却超过97% ============================================= ...

  10. 大连人工智能计算平台——华为昇腾AI平台——高性能计算HPC——如何在MPI中支持multiprocessing和fork操作——如何在HPC平台上使用pytorch——是否可以通过调度器的提交参数绕过HPC的计费系统

    本文要讨论的就是如何在MPI中支持multiprocessing和fork操作,但是这个问题同时也是如何在HPC平台如何使用pytorch的问题,可以说这两个问题其实是同一个问题,而这个问题的解决过程 ...