基于FTP协议的文件上传与下载

目录

一、什么是FTP协议

二、FTP的基本配置

 三、文件上传

四、文件下载

五、获取FTP目录下的所有文件


一、什么是FTP协议

        文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。 

        FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系统和文件存储方式。 

二、FTP的基本配置

        使用easyftp-server创建一个用户并设置用户名与密码,以及文件上传的主目录

 我们可以从服务器端看到,主机的ip,以及服务端口号,以便于接下来对文件的上传与下载

 三、文件上传

1、创建FTP协议的对象

FTPClient ftpClient = new FTPClient();

2、创建文件输入流,便于对本地文件的读取

FileInputStream loaclIn = new FileInputStream("d:\\***\\元智慧.jpg")

3、建立与ftp服务器的连接

        输入客户端的主机IP地址

ftpClient.connect("***.***.***.***",21);

4、登录

ftpClient.login("***", "**");

5、设置上传文件的类型,使用setFileType()方法

一般的文件都会设置成二进制字节类型

ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

6、上传至FTP服务器

  参数1:ftp本地服务器的存储位置(文件名)
  参数2:本地的文件输入流

	ftpClient.storeFile("**.jpg", loaclIn);

7、断开连接

	ftpClient.disconnect();

四、文件下载

1、创建FTP协议的对象

FTPClient ftpClient = new FTPClient();

2、创建文件输出流,便于下载的文件写入本地

FileOutputStream out = new FileOutputStream("d:\\test\\data\\" + downLoadFileName)

downLoadFileName:为写入本地的文件名

3、建立FTP服务器的连接

ftpClient.connect("***.***.***.***",21);

4、登录

ftpClient.login("***", "**");

5、设置下载文件的类型

ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

6、文件下载

ftpClient.retrieveFile(downLoadFileName,out);

 参数1:服务器指定文件

 参数2:本地输出流(负责下载后写入)

7、断开连接

	ftpClient.disconnect();

五、获取FTP目录下的所有文件

1、创建FTP协议的对象

2、连接并登录

3、切换至工作目录

4、使用ftpClient.listFiles()获取该目录下的所有文件,得到一个FTPFile类型的数组。

我们可以使用foreach循环,遍历每一个文件

使用getName()获取文件名称

使用getgetTime()获取文件创建时间

使用getSize()获取文件大小

示范代码:


//获取FTP目录下的所有文件
public class FtpFileList {
	public static void main(String[] args) {
		
		//FTP客户端
		FTPClient ftpClient = new FTPClient();
		
		try {
			//连接并登录
			ftpClient.connect("192.168.254.185",21);
			ftpClient.login("admin", "admin");
			
			//切换至工作目录dir01
			boolean isChange = ftpClient.changeWorkingDirectory("dir01");
			System.out.println("切换目录:" + isChange);
			
			//日期格式转换
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
			
			//获取该目录下所有文件
			FTPFile[] files = ftpClient.listFiles();
			
			for(FTPFile f : files) {
				
				System.out.println("文件名称:" + f.getName());
				
				//获取文件创建时间
				Date createDate = f.getTimestamp().getTime();
				
				//日期格式化
				String createDateStr = sdf.format(createDate);
				System.out.println("创建时间:" + createDateStr);
				
				//文件大小
				System.out.println("文件大小:" + f.getSize());
				
				//上传用户
				System.out.println("上传用户:" + f.getUser());
				System.out.println();
			}	
			
		} catch (SocketException e) {
		
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//断开连接
		finally {
			
			try {
				ftpClient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
	}
}

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值