FTP 客户端封装 - Ftp
# FTP 客户端封装 - Ftp
简介
Ftp
是 Hutool 基于 Apache Commons Net 封装的 FTP 客户端工具类,旨在简化 FTP 操作,如文件上传、下载、删除、列目录等。Ftp
提供了便捷的 API 接口,支持匿名登录、主动模式和被动模式的切换,适用于大多数 FTP 操作场景。
# 依赖引入
在使用 Ftp
工具类前,需要引入 Apache Commons Net 依赖:
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>${net.version}</version>
</dependency>
1
2
3
4
5
2
3
4
5
提示:请根据项目需求选择合适的版本,确保与 Hutool 的版本兼容。
# 1. 基本使用方法
Ftp
类提供了便捷的 FTP 操作功能。下面以匿名登录、文件上传、下载为例介绍其基本用法。
# 示例:匿名登录、上传和下载文件
import cn.hutool.extra.ftp.Ftp;
import cn.hutool.core.io.FileUtil;
public class FtpExample {
public static void main(String[] args) {
// 创建 Ftp 对象并连接到指定 FTP 服务器,默认使用被动模式
Ftp ftp = new Ftp("172.0.0.1");
// 切换到远程服务器上的目录
ftp.cd("/opt/upload");
// 上传本地文件到远程服务器
ftp.upload("/opt/upload", FileUtil.file("e:/test.jpg"));
System.out.println("文件上传成功");
// 从远程服务器下载文件到本地
ftp.download("/opt/upload", "test.jpg", FileUtil.file("e:/test2.jpg"));
System.out.println("文件下载成功");
// 关闭 FTP 连接
ftp.close();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
代码解析:
Ftp(String host)
:创建一个Ftp
实例并连接到指定的 FTP 服务器。默认使用被动模式。host
:FTP 服务器的地址。
cd(String directory)
:切换到指定的远程目录。directory
:要切换的远程目录路径。
upload(String remotePath, File file)
:将本地文件上传到远程服务器的指定目录。remotePath
:远程服务器目录路径。file
:要上传的本地文件。
download(String remotePath, String fileName, File destFile)
:从远程服务器下载文件到本地。remotePath
:远程服务器目录路径。fileName
:要下载的文件名。destFile
:下载到的本地文件路径。
close()
:关闭 FTP 连接。
适用场景:
- 适用于常规的文件上传和下载操作,例如自动化备份、日志收集等。
# 2. 主动模式与被动模式
Ftp
默认使用被动模式进行数据传输,但在某些网络环境下,可能需要切换到主动模式。
# 主动模式与被动模式简介
主动模式(PORT):
- 客户端随机开放一个端口,FTP 服务器通过其 20 端口与客户端的开放端口进行数据传输。
被动模式(PASV):
- 服务器随机开放一个端口,客户端连接到服务器的开放端口进行数据传输。
# 示例:切换到主动模式
import cn.hutool.extra.ftp.Ftp;
import cn.hutool.extra.ftp.FtpMode;
public class FtpExample {
public static void main(String[] args) {
// 创建 Ftp 对象并连接到指定 FTP 服务器
Ftp ftp = new Ftp("172.0.0.1");
// 切换为主动模式
ftp.setMode(FtpMode.Active);
// 后续的 FTP 操作将以主动模式进行
// 关闭 FTP 连接
ftp.close();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
代码解析:
setMode(FtpMode mode)
:设置 FTP 传输模式。mode
:可以设置为FtpMode.Active
(主动模式)或FtpMode.Passive
(被动模式)。
适用场景:
- 当 FTP 客户端和服务器之间的网络环境特殊,必须使用主动模式或被动模式时,使用该方法进行切换。
# 3. 实际开发中的应用场景
- 文件同步:通过 FTP 自动化工具将本地文件同步到远程服务器,或将服务器文件下载到本地进行备份。
- 数据传输:在企业内部或跨网络传输大文件或批量文件时,使用 FTP 进行数据传输。
- 远程运维:在自动化运维脚本中集成 FTP 操作,实现远程文件管理。
总结
Ftp
工具类为开发者提供了简洁且功能强大的 FTP 操作接口,封装了 Apache Commons Net 的复杂性,使得文件传输操作更加简单和高效。无论是简单的文件上传下载,还是需要切换传输模式的复杂场景,Ftp
都能很好地满足需求。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08