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卡创建文件夹和文件时报错 出错原因可能是: ...
随机推荐
- 网络基础 CAS协议学习总结
架构介绍 系统组件 CAS服务器和客户端构成了CAS系统体系结构的两个物理组件,它们通过各种协议进行通信. CAS服务器 CAS服务器是基于Spring Framework构建的Java servle ...
- 在MySQL中 Truncate Delect Drop 的区别
在MySQL中 Truncate Delect Drop 的区别 面试问题: -- -- 请详细描述MySQL中TRUNCATE TABLE.DELETE FROM和DROP TABLE三个命令的区别 ...
- 9、SpringMVC之处理静态资源
9.1.环境搭建 9.1.1.在project创建新module 9.1.2.选择maven 9.1.3.设置module名称和路径 9.1.4.module初始状态 9.1.5.配置打包方式和引入依 ...
- 【Vue2】Filter 过滤器
过滤器案例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- 【JavaScript】 文本滚动消息提示
需要引入JQ库 <script src="https://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script ...
- 【Vue】Re13 CLI(Command Line Interface)
一.What is CLI Command Line Interface 命令行接口 但是说是命令行界面,在官方又被称为脚手架 一个单词三个意思,所以令人困惑 但是根据实际意义用途来说就是帮助开发者更 ...
- 2024-08-03:用go语言,给定一个从 0 开始的字符串数组 `words`, 我们定义一个名为 `isPrefixAndSuffix` 的布尔函数,该函数接受两个字符串参数 `str1` 和
2024-08-03:用go语言,给定一个从 0 开始的字符串数组 words, 我们定义一个名为 isPrefixAndSuffix 的布尔函数,该函数接受两个字符串参数 str1 和 str2. ...
- [ZJOI2010] 基站选址 题解
前言 题目链接:洛谷. 题意简述 [ZJOI2010] 基站选址. 有 \(N\) 个村庄坐落在一条直线上,第 \(i\) 个村庄距离第 \(1\) 个村庄的距离为 \(D_i\).需要在这些村庄中建 ...
- AI 大模型时代呼唤新一代基础设施,DataOps 2.0和调度编排愈发重要
在 AI 时代,DataOps 2.0 代表了一种全新的数据管理和操作模式,通过自动化数据管道.实时数据处理和跨团队协作,DataOps 2.0 能够加速数据分析和决策过程.它融合了人工智能和机器学习 ...
- 海豚调度调优 | 正在运行的工作流(DAG)如何重新拉起失败的任务(Task)
本系列文章是DolphinScheduler由浅入深的教程,涵盖搭建.二开迭代.核心原理解读.运维和管理等一系列内容.适用于想对 DolphinScheduler了解或想要加深理解的读者. **祝开 ...