FTP编程入门案例——初识FTP


FTP协议是什么?

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP
协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源,实现用户往返传输文件、目录管理以及访问电子邮件等。


一、案例要求

  1. 实现FTP服务器的搭建;
  2. 通过FTPClient类创建基于FTP协议访问文件服务器的客户端对象;
  3. 连接FTP服务器,实现FTP服务器文件列表展示、文件上传、文件下载;

二、案例实现

1. 实现FTP服务器的搭建;

1.1安装easyftp-server软件

1.2设置搭建服务器;

在这里插入图片描述
1.3用主机名和web端口号测试服务器是否能正常使用;
在这里插入图片描述
1.4成功通过主机名加端口号验证后访问,则表示服务器已搭建完成;
在这里插入图片描述

2.通过FTPClient类创建基于FTP协议访问文件服务器的客户端对象;

FTPClient类不是jdk自带的类,需要加入jar包,才能使用。

//创建基于FTP协议访问文件服务器的客户端对象
FTPClient ftpClient = new FTPClient();

3. 1连接FTP服务器,实现FTP服务器文件列表展示、文件上传、文件下载:

//连接服务器并验证用户名密码
ftpClient.connect("192.168.254.133", 21);
ftpClient.login("admin", "123456");

3.2文件列表展示:

//切换到指定目录,如果该目录存在,返回true;不存在,返回false
boolean isChange =ftpClient.changeWorkingDirectory("bbb");
	 if(isChange) {
		//设置日期格式
		SimpleDateFormat fmt = new SimpleDateFormat("yyyy年MM月dd日");
		//获取当前目录中的所有文件
		FTPFile[] ftpFiles = ftpClient.listFiles();
		//遍历文件列表	
		for(FTPFile file:ftpFiles) {
			//解决中文乱码	
			String fileName = file.getName();
			fileName = new String(fileName.getBytes("iso-8859-1"),"gb2312");
			System.out.println("文件名称:"+fileName);				
			Date creatDate = file.getTimestamp().getTime();	
			System.out.println("创建时间:"+fmt.format(creatDate));
			System.out.println("文件大小:"+file.getSize()+"字节");
				}
			}else {
				//目录不存在,则创建该目录
				ftpClient.makeDirectory("bbb");
			}

在这里插入图片描述

3.3文件上传:

try(
//创建本地文件输入流
InputStream in = new FileInputStream("d:\\test\\bbb\\GG-Bond.jpg")) {			
			ftpClient.connect("192.168.254.133",21);
			ftpClient.login("admin", "123456");	
			//切换至个人目录	
			boolean isChange= ftpClient.changeWorkingDirectory("yangjia");
			//如果个人目录不存在
			if(!isChange) {
				//创建个人目录
				ftpClient.makeDirectory("yangjia");	
				//再次切换至个人目录	
				ftpClient.changeWorkingDirectory("yangjia");				
			}
			//设置文件类型
			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);	
			//存文件至FTP服务器,storeFile(FTP文件保存名称,本地文件输入流)		
			boolean isStore = ftpClient.storeFile("ggb.jpg", in); 	
		}
		...

注:因为是向FTP服务器中上传文件,所以在上传完毕后应断开链接!以免造成数据的丢失!

finally {
		try {
			//断开链接
			ftpClient.disconnect();
		} catch (IOException e) {
			ftpClient=null;
		}
	}

3.4文件下载:

//创建客户端对象
FTPClient ftpClient = new FTPClient();		
try(OutputStream out = new FileOutputStream("d:\\test\\bbb\\"+System.currentTimeMillis()+".jpg")) {
	//连接并验证
	ftpClient.connect("192.168.254.133",21);
	ftpClient.login("admin", "123456");
	//切换至个人目录		
	boolean isChange = ftpClient.changeWorkingDirectory("bbb");
	//文件类型
	ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
	//文件下载,retrieveFile(要下载的文件名 文件输出流)
	boolean is = ftpClient.retrieveFile("3.jpg", out);
	}
	...
	finally {
		try {
			//断开链接
			ftpClient.disconnect();
		} catch (IOException e) {
			ftpClient=null;
		}
	}
	
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值