FTP协议文件传输相关案例

FTP是应用层的一个文件传输协议, 主要作用是在服务器和客户端之间实现文件的传输和共享。. FTP协议运行在TCP连接上,保证了文件传输的可靠性。

使用FTP协议进行文件传输,首先要创建基于FTP协议访问文件服务器的客户端对象,并准备好

连接ftp服务器并验证用户名密码。

一、文件列表展示

public class Demo01 {
public static void main(String[] args) {
	//创建基于FTP协议访问文件服务器的客户端对象
	FTPClient ftpClient=new FTPClient();
	try {
		//连接ftp服务器并验证用户名密码
		ftpClient.connect("192.168.254.140",21);
		ftpClient.login("admin", "123456");
		
        //切换文件
		boolean ischange=ftpClient.changeWorkingDirectory("ftp");
		if(ischange) {
            //设置文件时间指定格式
			SimpleDateFormat fmt=new SimpleDateFormat("yyyy年MM月dd日");			
			
			//获取目录中的所有文件
			FTPFile[] ftpClientList=ftpClient.listFiles();
			for(FTPFile file:ftpClientList) {
				//文件名称包含中文乱码
				String fileName=file.getName();
				fileName=new String(fileName.getBytes("iso-8859-1"),"gb2312");
				System.out.println("文件名:"+fileName);

                Date createdate=file.getTimestamp().getTime();
				System.out.println("创建时间:"+fmt.format(createdate));//设置指定时间格式
				
				System.out.println("文件大小:"+file.getSize()+"字节");
				
			}
		}else {
			ftpClient.makeDirectory("ftp");
		}
		
	} catch (SocketException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}		
}
}

进行文件列表展示在完成准备工作后,要使用ftpClient.changeWorkingDirectory("ftp")切换到指定文件。若文件夹不存在则调用ftpClient.makeDirectory("ftp")创建文件夹。若文件夹存在则可调用ftpClient.listFiles()进行文件列表展示。使用FTPFile[] 接受目录中的文件。

二、文件上传

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

文件上传在切换到个人目录后,调用ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)设置文件类型,然后调用ftpClient.storeFile(System.currentTimeMillis()+".jpg", in)将文件保存至服务器。即可,参数1:FTP文件保存名称,参数2:本地文件输入流。该方法返回值为布尔值。

三、文件下载

public class Demo03 {
public static void main(String[] args) {
	//创建基于FTP协议访问文件服务器的客户端对象
		FTPClient ftpClient=new FTPClient();	
			try(FileOutputStream out=new FileOutputStream("D:\\y\\test\\ftptest\\"+System.currentTimeMillis()+".jpg")) {
				//连接ftp服务器并验证用户名密码
				ftpClient.connect("192.168.254.140",21);
				ftpClient.login("admin", "123456");
				//第二步:切换至个人目录
				boolean isChange=ftpClient.changeWorkingDirectory("liubin");
				ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//文件类型
				boolean isRetrie=ftpClient.retrieveFile("3.jpg", out);
				System.out.println("文件下载成功?"+isRetrie);
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally {
				try {
					//断开连接
					ftpClient.disconnect();
				}catch(IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();					
				}			
}
}
}

 文件下载在切换到个人目录后,调用ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)设置文件类型,调用ftpClient.retrieveFile("3.jpg", out)下载文件,参数1:下载文件名称,参数2:本地文件输出流。可将文件下载至指定本地文件目录。
          在完成文件上传和下载后都要调用 ftpClient.disconnect()断开连接。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值