FTP(File Transfer Protocol,文件传输协议)是一种用于在计算机网络上进行文件传输的标准协议。它定义了客户端和服务器之间的通信规则,使得用户可以通过网络上传和下载文件,以下分别是文件的下载以及上的过程。
1. 文件下载的过程
① 建立连接
// 创建了一个名为ftpClient的FTP客户端对象
FTPClient ftpClient = new FTPClient();
// 指定文件下载的路径,通过ftp访问指定目录并下载文件
try (FileOutputStream out = new FileOutputStream("下载路径" + System.currentTimeMillis())){
// 连接ftp服务器(ftp默认的端口号为21)并验证用户名、密码
ftpClient.connect("ip地址",21);
ftpClient.login("用户名", "密码");
}
② 切换至个人目录
boolean isChange = ftpClient.changeWorkingDirectory("个人目录名");
System.out.println("目录切换成功了吗?" + isChange);
③ 下载指定文件
// 设置文件的类型
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
// 下载文件,并确定结果
boolean isRetrieve = ftpClient.retrieveFile("待下载的文件名", out);
2. 文件上传过程
① 连接ftp服务器并验证用户名、密码
无论是上传文件或是下载文件,第一部都需要先建立连接,因此,第一步的实现方法是相同的,不过,由于下载文件时是将读取到的文件存放至本地文件,因此采用的是文件输出流,但在文件上传过程中,是将本地文件读取至程序中并上传,因此需要定义的是文件输入流,以便读取本地文件并上传。
② 切换目录至上传文件处
// 通过changeWorkingDirectory()方法切换目录并判断是否切换成功
boolean isChange = ftpClient.changeWorkingDirectory("目标目录名");
// 获取当前目录中的所有文件
FTPFile[] ftpFileList = ftpClient.listFiles();
// 如若没有你想上传的目录也可以自行建立一个目录
// 创建个人目录
ftpClient.makeDirectory("创建的目录名");
// 切换至新建目录
ftpClient.changeWorkingDirectory("创建的目录");
③ 上传文件并存放
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
// 存文件至FTP
boolean isStore = ftpClient.storeFile(System.currentTimeMillis(), 文件输入流);