目录
一、 什么是FTP?
二、easyftp_server
三、文件的上传
四、文件的下载
一、 什么是FTP?
FTP(文件传输协议)是一个用于在计算机网络上客户端和服务器之间进行文件传输的应用层协议。FTP客户首先发起建立1个与FTP服务器端口号21之间的TCP控制连接, 指定TCP作为传输层协议,客户在建立的控制连接上获得身份认证。在FTP的使用当中,用户经常遇到两个念:“下载”(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
二、easyftp_server
1.启动easyftp_server服务器并创建一个用户:
浏览器访问FTP服务器
三、文件的上传
1.创建FTP协议的客户端对象(所有的操作都基于FTPClient)
2.连接FTP服务器(FTP服务器的ip地址,端口号)
3.登录(账号,密码)
4.存储
(1)切换至指定的存储目录(如果没有,则创建该目录)
(2)存储前设置文件类型
(3)存储(ftp服务器的存储位置(目录+文件名),本地的文件输入流)
5.断开连接
package com.apesource.demo;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
public class Upload {
public static void main(String[] args) {
// FTP协议的客户端对象
FTPClient ftpClient = new FTPClient();
try (FileInputStream localIn = new FileInputStream("D:\test\珠峰队长.jpg")){
// 连接FTP服务器
ftpClient.connect("192.168.xxx.xxx", 21);
// step2: 登录
ftpClient.login("xxx", "xxx");
// step3: 操作
// 切换至指定目录
boolean isChange = ftpClient.changeWorkingDirectory("xxx");
System.out.println("切换工作目录1:" + isChange);
if(!isChange) {
ftpClient.makeDirectory("xxx");
isChange = ftpClient.changeWorkingDirectory("xxx");
}
System.out.println("切换工作目录2:" + isChange);
// 存储文件(将本地文件上传至FTP协议)
// 参数1:ftp服务器的存储位置(目录+文件名)
// 参数2:本地的文件输入流
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); // 存储前设置文件类型
ftpClient.storeFile("xx.jpg", localIn); // 存储
} catch (SocketException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
ftpClient.disconnect(); // 断开连接
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
四、文件的下载
1.创建FTP协议的客户端对象
2.连接并登录
3.切换至指定的存储目录
4.下载文件
(1)设置文件类型(二进制文件类型)
(2)下载文件
retrieveFile(服务器指定文件,本地输出流(负责下载后写入))
5.断开连接
package com.apesource.demo;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
public class Download {
public static void main(String[] args) {
String downloadFileName = “jay.jpg”;
FTPClient ftpClient = new FTPClient();
try(FileOutputStream out = new FileOutputStream("D:\test\aaa\" + downloadFileName)) {
// 连接并登录
ftpClient.connect("192.168.254.192", 21);
ftpClient.login("root", "root");
ftpClient.changeWorkingDirectory("xxx"); // 切换目录
// 下载文件(获取FTP服务器指定目录(xxx)的文件)
// 参数1:服务器指定文件
// 参数2:本地输出流(负责下载后写入)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); // 设置文件类型
boolean isRetrieve = ftpClient.retrieveFile(downloadFileName, out);
System.out.println("下载成功?" + isRetrieve);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
ftpClient.disconnect(); // 断开连接
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
文章转自:基于FTP协议的文件上传与下载_Java-答学网
作者:答学网,转载请注明原文链接:http://www.dxzl8.com/