java 使用ftp文件服务

本文介绍如何使用Java和commons-net库进行FTP文件传输,包括文件上传、下载操作,并解决中文乱码及文件损坏问题。通过设置文件类型为二进制,确保文件完整无损。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java 使用ftp文件服务

本文讲述如何在java做工使用ftp文件服务, 进行文件上传,下载等操作

以及如何解决中文乱码, 文件损坏等问题

依赖

 <!-- https://mvnrepository.com/artifact/commons-net/commons-net -->
<dependency>
  <groupId>commons-net</groupId>
  <artifactId>commons-net</artifactId>
  <version>3.7</version>
</dependency>

解决中文文件乱码

中出现乱码一般都是由于编码问题导致

ftp传输协议定义的编码为iso-8859-1

将文件名和文件夹名转码再通过ftpClient操作

/** 转码代码参考 */
private static String to_Iso8859_1(String str) {
  if (StringUtils.isBlank(str)) return str;
  return new String(str.getBytes(), StandardCharsets.ISO_8859_1);
}

如果项目使用了指定的编码可以在字符串转byte数组时候加上指定编码

如: str.getBytes("GBK")

解决文件损坏

测试中我发现经过传输部分文件出现异常…

异常场景: 我有两张图片(2.5m的png205.8k的jpg), 这两个文件上传到ftp服务器均正常(可以正常打开, 且打开后图片无异常)

但是我再通过再javaftp协议拉到本地的时候图片出现了不同程度的异常

  • 2.5m的png: 无法打开(打开直接报文件损坏)
  • 205.8k的jpg: 可以打开, 但是图片中有部分是错位的

直接使用别的方式拉取图片到本地两张图片均正常(说明在ftp服务器上的文件是好的)

解决方案:

上传和下载均加上如下代码(使用二进制的方式传输文件)

ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

源码参考

下载地址跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值