FTP协议,FTP服务器文件列表展示、文件上传、文件下载代码解析

        一、FTP协议允许TCP/IP网络上的两台计算机之间进行文件传输。而FTP服务是基于FTP协议的文件传输服务。工作时,一台计算机上运行FTP客户端应用程序,另一台计算机上需要运行FTP服务器端程序。只有拥有了FTP服务,客户端才能进行文件传输。

①展示指定目录的文件信息

1、先创建一个FTPClient对象,代表我们的客户端;

2、然后连接FTP服务器并且验证用户名和密码;

3、通过ftpClient.changeWorkingDirectory来查看是否存在我们需要的目录,存在就访问并且获取目录的信息内容,否则创建这个目录;

4、最后断开连接。


public static void main(String[] args) {
 
		FTPClient ftpClient = new FTPClient();
 
		try {
 
			// 连接FTP服务器并且验证用户名和密码
			ftpClient.connect("192.168.254.175", 21);
			ftpClient.login("coco", "123456");
 
			// 查看是否存在对应的目录
			boolean isChange = ftpClient.changeWorkingDirectory("hai");
 
			if (isChange) {
				// 目录存在 显示该目录的内容
				FTPFile[] FTPFileList = ftpClient.listFiles();
 
				// 处理日期格式
				SimpleDateFormat fmt = new SimpleDateFormat("XXXX-NN-BB");
 
				for (FTPFile ftp : FTPFileList) {
					// 处理乱码
					String name = ftp.getName();
					name = new String(name.getBytes("iso-8859-1"), "gb2312");
					System.out.println("文件名称:" + name);
					Date date = ftp.getTimestamp().getTime();
					System.out.println("创建时间:" + fmt.format(date));
					System.out.println("文件大小:" + ftp.getSize());
					System.out.println();
				}
			} else {
				ftpClient.makeDirectory("lizhihui");
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			// 断开连接
			try {
				ftpClient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
				ftpClient = null;
			}
		}
	}

②上传文件到指定目录

1、需要将上传的文件以流的方式引入;

2、通过ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);指定文件类型;

3、最后使用ftpClient.storeFile上传文件,他需要两个参数,第一个参数为文件名称,第二个参数为我们引入的文件流。


public static void main(String[] args) {
		FTPClient ftpClient = new FTPClient();
 
		try (InputStream in = new FileInputStream(new File("D:\\java\\ddc.jpg"))) {
 
			// 连接FTP服务器并且验证用户名和密码
			ftpClient.connect("192.168.254.175", 21);
			ftpClient.login("coco", "123456");
 
			// 查看是否存在对应的目录
			boolean isChange = ftpClient.changeWorkingDirectory("hai");
 
			if (!isChange) {
				// 创建个人目录
				ftpClient.makeDirectory("hai");
				// 切换
				ftpClient.changeWorkingDirectory("hai");
			}
 
			// 文件类型
			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
 
			boolean is = ftpClient.storeFile(System.currentTimeMillis() + ".jpg", in);
			System.out.println(is);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				ftpClient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

③下载文件到指定目录

【创建一个输出流,写入下载的文件,通过ftpClient.retrieveFile("3.jpg", out)下载指定文件】、

1、连接FTP服务器并验证用户名密码

2、切换至个人目录

3、下载指定文件

4、断开连接,以便于他人的进入

public static void main(String[] args) {
 
		FTPClient ftpClient = new FTPClient();
 
		try (OutputStream out = new FileOutputStream(new File("C:\\java\\" + System.currentTimeMillis() + ".jpg"))) {
			ftpClient.connect("192.168.254.175", 21);
			ftpClient.login("coco", "123456");
 
			boolean isChange = ftpClient.changeWorkingDirectory("dlw");
 
			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
			// 下载指定文件
			boolean isd = ftpClient.retrieveFile("3.jpg", out);
			System.out.println(isd);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			// 断开连接
			try {
				ftpClient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
				ftpClient = null;
			}
		}
	}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FTP协议文件协议)是一种用于在网络上文件的标准协议。它基于客户端服务器模型,客户端通过FTP客户端软件连接到服务器上的FTP服务器,然后进行文件输和访问。 要解析FTP协议代码,我们首先需要了解协议的基本原理。FTP使用两个TCP连接进行通信,一个用于控制连接,一个用于数据连接。控制连接负责发送命令和接收响应,数据连接负责文件数据。下面是一个简单的FTP协议解析代码的示例: ```python import socket # 创建一个TCP/IP套接字 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 建立控制连接 sock.connect(('ftp.example.com', 21)) response = sock.recv(1024) # 接收服务器的响应 print(response) # 发送用户名和密码进行登录 sock.sendall('USER username\r\n'.encode()) response = sock.recv(1024) print(response) sock.sendall('PASS password\r\n'.encode()) response = sock.recv(1024) print(response) # 发送PWD命令获取当前目录 sock.sendall('PWD\r\n'.encode()) response = sock.recv(1024) print(response) # 发送LIST命令获取目录列表 sock.sendall('LIST\r\n'.encode()) response = sock.recv(1024) print(response) # 发送QUIT命令关闭连接 sock.sendall('QUIT\r\n'.encode()) response = sock.recv(1024) print(response) # 关闭套接字 sock.close() ``` 以上示例代码使用Python的socket模块创建了一个TCP/IP套接字,并使用connect函数连接到FTP服务器的控制端口21。然后,它按照FTP协议规定的顺序发送各种命令(如用户名、密码、PWD、LIST等)并接收服务器的响应。最后,它发送QUIT命令关闭连接。 这只是一个简单的FTP协议解析的示例代码。实际上,FTP协议还有很多其他命令和功能,如上文件下载文件、创建目录、删除文件等。解析完整的FTP协议需要更复杂的代码逻辑和处理逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值