FTP协议

一、FTP协议

FTP(File Transfer Protocol)是文件传输协议,我们可以在服务器中存放大量的共享软件和免费资源,网络用户可以从服务器中下载文件,或者将客户机上的资源上传至服务器。FTP就是用来在客户机和服务器之间实现文件传输的标准协议。它使用客户/服务器模式,客户程序把客户的请求告诉服务器,并将服务器发回的结果显示出来。而服务器端执行真正的工作,比如存储、发送文件等。如果用户要将一个文件从自己的计算机发送到FTP服务器上,称为FTP的上传,而更多的情况是用户从服务器上把文件或资源传送到客户机上,称为FTP的下载。在Internet上存在有许多FTP服务器,它们往往存储了许多允许存取的文件,如:文本文件、图像文件、程序文件、声音文件、电影文件等。

二、FTP服务器的搭建

1、安装easyftp-server-1.7.0.10-cn软件

2、设置服务器

设置用户名、密码、主目录,给予操作文件的一些权限。

3、使用主机名和web服务端口号测试服务器是否能正常使用。

用户名和密码输入设置好的用户名和密码,然后就能正常访问到设置的主目录下的文件。

 

 

三、连接 FTP服务器,显示文件列表

1、创建基于FTP协议访问文件服务器的客户端对象。

2、连接FTP服务器并验证用户名和密码。

3、切换至指定的目录,如果没有该目录,则创建指定的目录。

4、切换成功后,获取当前目录中所有的文件。

5、显示指定目录下所有文件。

示例代码如下:

//连接 FTP服务器,显示文件列表
public class Demo01 {
	public static void main(String[] args) {
		//创建基于FTP协议访问文件服务器的客户端对象
		FTPClient ftpClient=new FTPClient();
		try {
			//连接FTP服务器并验证用户名密码
			ftpClient.connect("192.168.254.164",21);
			ftpClient.login("hy", "123456");
			boolean isChange=ftpClient.changeWorkingDirectory("hy");
			if(isChange) {
				//切换成功  显示hy目录下的所有文件
				SimpleDateFormat fmt=new SimpleDateFormat("yyyy年MM月dd日");
				//获取当前目录中所有的文件
				FTPFile[] fftpFileList=ftpClient.listFiles();
				for(FTPFile file:fftpFileList) {
					//文件名称中包含中文乱码
					String fileName=file.getName();
					fileName=new String(fileName.getBytes("iso-8859-1"),"gb2312");
					System.out.println("文件名称:"+fileName);
					Date createData=file.getTimestamp().getTime();
					System.out.println("创建时间:"+fmt.format(createData));
					System.out.println("文件大小:"+file.getSize()+"字节");
				}
			}else {
				//创建指定目录
				ftpClient.makeDirectory("hy");
			}
			
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
				
	}

}

四、FTP服务器文件上传

1、创建基于FTP协议访问文件服务器的客户端对象。

2、连接FTP服务器并验证用户名和密码。

3、切换至指定的目录,如果没有该目录,则创建指定的目录并切换。

4、设置文件的类型,将文件存至FTP目录,

5、成功上传文件

示例代码如下:

public class Demo02 {
	public static void main(String[] args) {
		//创建基于FTP协议访问文件服务器的客户端对象
				FTPClient ftpClient=new FTPClient();
				try(FileInputStream in=new FileInputStream("D:\\test\\20230708\\bg.jpg")) {
					//第一步:连接FTP服务器并验证用户名密码
					ftpClient.connect("192.168.254.164",21);
					ftpClient.login("hy", "123456");
					//第二步:切换至个人目录
					boolean isChange=ftpClient.changeWorkingDirectory("huangying");
					if(!isChange) {
						//创建个人目录
						ftpClient.makeDirectory("huangying");
						//切换
						ftpClient.changeWorkingDirectory("huangying");
					}
					System.out.println(ftpClient.printWorkingDirectory());
					//第三步:文件上传
					ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//设置文件类型
					//存文件至FTP目录
					//参数1:FTP文件的保存名称
					//参数2:本地文件输入流
					boolean isStore=ftpClient.storeFile(System.currentTimeMillis()+".jpg", in);
					System.out.println("文件上传成功?"+isStore);
				} catch (SocketException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}finally {
						try {
							ftpClient.disconnect();
						} catch (IOException e) {
							e.printStackTrace();
							ftpClient=null;
						}
						
				}
	}

}

五、FTP服务器文件下载

1、创建基于FTP协议访问文件服务器的客户端对象。

2、连接FTP服务器并验证用户名和密码。

3、切换至指定的目录。

4、下载指定文件。

5、成功下载文件。

示例代码如下:

public class Demo03 {
	public static void main(String[] args) {
		//创建基于FTP协议访问文件服务器的客户端对象
		FTPClient ftpClient=new FTPClient();
		try(FileOutputStream out=new FileOutputStream("D:\\test\\20230708\\"+System.currentTimeMillis()+".jpg")) {
			//第一步:连接FTP服务器并验证用户名密码
			ftpClient.connect("192.168.254.164",21);
			ftpClient.login("hy", "123456");
			//第二步:切换至个人目录
			ftpClient.changeWorkingDirectory("huangying");
			//第三步:下载指定文件
			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//设置文件类型
			boolean isRetrieve=ftpClient.retrieveFile("bg1.jpg", out);
			System.out.println("下载成功?"+isRetrieve);
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
				try {
					ftpClient.disconnect();
				} catch (IOException e) {
					e.printStackTrace();
					ftpClient=null;
				}
				
			
		}
	}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值