通过代码案例了解FTP协议相关知识

目录

1、操作前准备

    (1)什么是FTP协议

    (2)Java如何实现文件传输

    (3)下载ftp服务器

2、Java代码案例解析

(1)获取当前目录中所有文件信息

                第一步    创建基于FTP协议访问文件服务器的客户端对象

                 第二步    连接ftp服务器并验证那用户名和密码(模拟登录)

                第三步   进行需要的操作

(2)切换目录即文件夹

  (3)向目标目录传输文件

 (4)从目标目录中下载指定文件

 总结:

1、操作前准备

    (1)什么是FTP协议

        FTP(File Transfer Protocol):是应用层的一个文件传输协议 。主要作用是在服务器和客户端之间实现文件的传输和共享。FTP协议运行在TCP连接上,保证了文件传输的可靠性。在传输时,传输双方的操作系统、磁盘文件系统类型可以不同。

    (2)Java如何实现文件传输

        导入commons-net-3.6.jar包,获取基于FTP协议封装好的类库。

    (3)下载ftp服务器

        下载压缩包: 

         解压后运行:蓝色小鱼 

         成功运行:

         点击蓝色小人:第一个选项创建新用户

        

         注:主目即你要进行传输操作的磁盘地址。权限按需选择。

        完成后,可用浏览器根据主机IP及Web服务端口进入,并输入用户名及密码进入

 可以看到主目中存在的文件:

说明我们的服务器正常运行。

2、Java代码案例解析

        即不使用浏览器,使用Java代码创建客户端对象进行操作。

(1)获取当前目录中所有文件信息

                第一步    创建基于FTP协议访问文件服务器的客户端对象

FTPClient ftpClient = new FTPClient();

                 第二步    连接ftp服务器并验证那用户名和密码(模拟登录)

ftpClient.connect("192.168.254.185",21);//进入服务
ftpClient.login("admin", "1234");//信息验证

                第三步   进行需要的操作

在准备阶段,我们从浏览器中可以看到文件的各个属性。

FTPFile[] ftpFilelist = ftpClient.listFiles();//将获取的列表信息存储在FTPFile数组内
            //进行遍历打印
			for(FTPFile file : ftpFilelist) {
				System.out.println("文件名称:" + file.getName());
				System.out.println("文件大小:" + file.getSize() + "字节");
				System.out.println("文件创建时间:" + file.getTimestamp());
            }

部分运行结果如下:

我们可以看到,中文乱码及创建时间复杂输出,所以我们需要进行数据处理。

将名称存入字符串处理

String fileName = file.getName();
fileName = new String(fileName.getBytes("iso-8859-1"),"gb2312");//处理格式记住就好
System.out.println("文件名称:" + fileName);

将创建时间进行处理

SimpleDateFormat fmt = new SimpleDateFormat("yyyy年MM月 dd日");//设置格式
Date createDate = file.getTimestamp().getTime();
System.out.println("文件创建时间:" + fmt.format(createDate));

部分运行结果如下:

(2)切换目录即文件夹

//aaa为需要切换的目录名(切换到子目录需要)
boolean Ischange = ftpClient.changeWorkingDirectory("aaa");
boolean Ischange = ftpClient.changeToParentDirectory();//返回至上一级目录

 返回值时布尔类型,所以当切换的目录不存在时,需要创建目录

ftpClient.makeDirectory("aaa");//aaa为目录名

 创建成功会在主目录中显示

  (3)向目标目录传输文件

//创建基于FTP协议访问文件服务器的客户端对象
				FTPClient ftpClient = new FTPClient();
				//创建读取上传文件的输入流
				try (FileInputStream in = new FileInputStream("C:\\Users\\GAN\\Desktop\\1\\薛之谦.jpg")){
					//连接ftp服务器并验证那用户名和密码
					ftpClient.connect("192.168.254.185",21);
					ftpClient.login("admin", "1234");
					
					//切换目录
					boolean Ischange = ftpClient.changeWorkingDirectory("aaa");
                    //如果目标不存在
					if(!Ischange) {
						//创建个人目录
						ftpClient.makeDirectory("aaa");
						//切换至个人目录
						ftpClient.changeWorkingDirectory("aaa");
					}
					
					//文件上传
					ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//设置文件类型
					
					//存至服务器
					//参数1:FTP文件的保存名称
					//参数2:本地文件输入流
                    //System.currentTimeMillis()通过时间命名
					boolean isStore = ftpClient.storeFile(System.currentTimeMillis() + ".jpg", in);
					System.out.println("文件上传成功?" + isStore);
					
				} catch (SocketException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

运行结果:

 (4)从目标目录中下载指定文件

//创建基于FTP协议访问文件服务器的客户端对象
		FTPClient ftpClient = new FTPClient();
		//下载文件需要的输出流
		try (FileOutputStream out = new FileOutputStream("C:\\Users\\GAN\\Desktop\\1\\" + System.currentTimeMillis() + ".jpg")){
			//连接ftp服务器并验证那用户名和密码
			ftpClient.connect("192.168.254.185",21);
			ftpClient.login("admin", "1234");
			
			//切换目录
			boolean Ischange = ftpClient.changeWorkingDirectory("aaa");
			System.out.println(Ischange);
			//文件下载
			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//设置文件类型二进制文件
            //参数1:指定文件名称
            //参数2:下载需要的输出流
			boolean isRetrieve = ftpClient.retrieveFile("1.jpg", out);
			System.out.println("文件下载成功?" + isRetrieve);
			
		} catch (SocketException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

运行结果: 

 

 总结:

        1、FTP协议是一种应用层的文件传输协议。

        2、Java可通过commons-net-3.6.jar包进行文件传输操作

        3、文件传输的主要步骤有(1)创建基于FTP协议访问文件服务器的客户端对象

                                                  (2)连接ftp服务器并验证那用户名和密码(模拟登录)

        4、可进行的部分操作(1)显示目录内文件信息

                                           (2)切换目录,并创建新目录。

                                           (3)将文件上传至指定目录

                                           (4)从目标目录下载指定文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值