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;
			}
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值