Java远程连接服务器实现文件上传下载及目录操作
详情请阅读原文
在其基础之上做了进一步的封装
<!-- 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远程连接服务器实现文件上传下载及目录操作的更多相关文章
- Java实现FTP批量大文件上传下载篇1
本文介绍了在Java中,如何使用Java现有的可用的库来编写FTP客户端代码,并开发成Applet控件,做成基于Web的批量.大文件的上传下载控件.文章在比较了一系列FTP客户库的基础上,就其中一个比 ...
- xftp实现本地与服务器的文件上传下载(windows)
背景: Jemter环境搭建,需上传下载服务器文件到aws服务器上,由于secureCRT的局限性它只支持pub格式的密钥,不支持pem格式密钥,xshell是支持pem格式的,所以尝试安装xshel ...
- Java实现FTP与SFTP文件上传下载
添加依赖Jsch-0.1.54.jar <!-- https://mvnrepository.com/artifact/com.jcraft/jsch --> <dependency ...
- JAVA中使用FTPClient实现文件上传下载
在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件 ...
- linux命令行模式下对FTP服务器进行文件上传下载
参考源:点击这里查看 1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码 ...
- 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 ...
- 基于 java 【Web安全】文件上传漏洞及目录遍历攻击
前言:web安全之文件上传漏洞,顺带讲一下目录遍历攻击.本文基于 java 写了一个示例. 原理 在上网的过程中,我们经常会将一些如图片.压缩包之类的文件上传到远端服务器进行保存.文件上传攻击指的是恶 ...
- java中io流实现文件上传下载
新建io.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" page ...
- vb.net FTP上传下载,目录操作
https://blog.csdn.net/dzweather/article/details/51429107 FtpWebRequest与FtpWebResponse类用来与特定FTP服务器进行沟 ...
- Android与Asp.Net Web服务器的文件上传下载BUG汇总[更新]
遇到的问题: 1.java.io.IOException: open failed: EINVAL (Invalid argument)异常,在模拟器中的sd卡创建文件夹和文件时报错 出错原因可能是: ...
随机推荐
- OLOR:已开源,向预训练权值对齐的强正则化方法 | AAAI 2024
随着预训练视觉模型的兴起,目前流行的视觉微调方法是完全微调.由于微调只专注于拟合下游训练集,因此存在知识遗忘的问题.论文提出了基于权值回滚的微调方法OLOR(One step Learning, On ...
- 2024-07-27:用go语言,给定一个正整数数组,最开始可以对数组中的元素进行增加操作,每个元素最多加1。 然后从修改后的数组中选出一个或多个元素,使得这些元素排序后是连续的。 要求找出最多可以选
2024-07-27:用go语言,给定一个正整数数组,最开始可以对数组中的元素进行增加操作,每个元素最多加1. 然后从修改后的数组中选出一个或多个元素,使得这些元素排序后是连续的. 要求找出最多可以选 ...
- Jmeter函数助手14-TestPlanName
TestPlanName函数获取当前测试计划保存的文件名称.该函数没有参数,直接引用即可${__TestPlanName}.
- Springboot + Vue ElementUI 实现MySQL可视化
一.功能展示: 效果如图: DB连接配置维护: Schema功能:集成Screw生成文档,导出库的表结构,导出表结构和数据 表对象操作:翻页查询,查看创建SQL,生成代码 可以单个代码文件下载,也 ...
- 【Mybatis-Plus】02 Spring整合,基本CRUD
创建非骨架普通Maven工程: 引入Spring & MybatisPlus的依赖坐标及其它持久层依赖: <properties> <spring.version>5. ...
- 【DataBase】SQL50 Training 50题训练
原文地址: https://blog.csdn.net/xiushuiguande/article/details/79476964 实验数据 CREATE DATABASE IF NOT EXIST ...
- 训练人形机器人时如何收集人类行为数据 —— 通过人来训练机器人(真人实际演示动作)or 仿真环境自动生成 —— 哪种方式更优、更可行呢
特斯拉的老马,搞的optimus人形机器人就是通过人来训练机器人(真人实际演示动作),但是未来使用仿真环境自动生成数据是否可行呢,NVIDIA的老黄在2024 GTC上是大力推出自家的GROOT平台, ...
- 服务器上运行 xvbf 时报错 —— Unknown encoder 'libx264'
解决方法: 使用conda环境(不具体交代) conda install ffmpeg 成功运行:
- LeetCode279:完全平方数——动态规划算法——python语言
无意间看到了这么一个题: LeetCode279:完全平方数,动态规划解法超过46%,作弊解法却超过97% ============================================= ...
- 大连人工智能计算平台——华为昇腾AI平台——高性能计算HPC——如何在MPI中支持multiprocessing和fork操作——如何在HPC平台上使用pytorch——是否可以通过调度器的提交参数绕过HPC的计费系统
本文要讨论的就是如何在MPI中支持multiprocessing和fork操作,但是这个问题同时也是如何在HPC平台如何使用pytorch的问题,可以说这两个问题其实是同一个问题,而这个问题的解决过程 ...