使用Commons net轻松实现Ftp文件上传及相关操作详解
最近项目里要进行Ftp文件上传,选用了Commons net。Commons net包里的ftp工具类能帮我们轻松达成Ftp方式的文件上传及下载。其中极为重要的一个类是FTPClient类,它提供了诸多与FTP操作相关的

方法,比如链接,登录,上传,下载,和注销。
FTP操作过程中,一般要先连接服务器。接着进行登录。之后开展文件上传或下载操作。还会涉及文件及目录的添加、删除、修改等操作。平常使用较多的是文件的上传与下载。
下面是一些基本的上传操作 引入Commons net的jar包就能使用这些操作
public class FtpUtil {
公共静态无效主函数(字符串数组参数) {
将其赋值给名为ftpClient的变量
try {
//连接指定服务器,默认端口为21
ftp客户端连接到127.0.0.1
系统输出“连接到服务器”
//获取响应字符串(FTP服务器上可设置)
字符串replyString获取自ftpClient的回复字符串
系统输出打印 "replyString: " 加上 replyString
//获取响应码用于验证是否连接成功
获取FTP客户端的回复代码。将其赋值给变量reply。
倘若回复并非肯定完成状态
System.out.println("");
System.exit(1);
}
需使用GBK或gb2312编码
ftpClient设置控制编码为GBK
//登录服务器
布尔值login被赋值为ftpClient调用login方法的返回值 该方法的参数分别是"luojing"和"luojing"
if (login) {
System.out.println("登录成功!");
} else {
System.out.println("登录失败!");
}
//获取所有文件和文件夹的名字
该数组的数据类型是FTPFile[]
for(FTPFile file : files){
if(file.isDirectory()){
其表示这是一个文件夹
}
if(file.isFile()){
System.out.println("是文件");
}
}
//生成InputStream用于上传本地文件
文件路径为e:\1.txt
//上传文件
存储时使用in
in.close();
//注销登录
布尔值logout 等于 ftpClient.logout()的返回值 该返回值表示登出操作是否成功 若成功则logout为真 反之为假 这里将其赋值给logout变量 用于后续判断等操作
if (logout) {
System.out.println("注销成功!");
} else {
System.out.println("注销失败!");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭链接需要放在finally语句块中
如果文件传输协议客户端处于已连接状态
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
此外,FTPClient类还提供了一些用于文件或文件夹操作的方法。借助commos net提供的方法,能够便捷地实现断点传输等功能。我能够借助retrieveFileStream方法获取远程服务器里指定文件的输入流,用于手动读操作。也能用appendFileStream方法获取要上传至远程服务器的文件对应的输出流对象。之后就能手动从本地文件读取数据并写入远程服务。比如想了解上传进度。总的来说 Commons net提供的方法十分好用且便利 一些其他功能使用时需查看API手册
或许是受环境的作用。发觉来到公司后。学习效率比在学校时高了不少。继续努力!