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

本文介绍了如何使用Java通过Apache Commons FTP库实现FTP连接,包括获取服务器目录列表、上传文件至FTP服务器以及从服务器下载文件。重点展示了登录、目录切换和文件属性读取的示例代码。
摘要由CSDN通过智能技术生成

一FTP简介:FTP是用于在网络上进行文件传输的一套标准协议,它工作在OSI模型的第七层,TCP模型的第四层(应用层),使用TCP传输而不是UDP,FTP是基于客户------服务器模型而设计的,在客户端与FTP服务器之间建立两个连接。

二:获取FTP服务器上的列表

package com.x;

import java.io.IOException;
import java.net.SocketException;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

public class Ftp1 {
	public static void main(String[] args) {
		//FTP客户端对象
		FTPClient ftpClient = new FTPClient();
		
		
		try {
			ftpClient.connect("192.168.254.197", 21);
			ftpClient.login("root", "root");
			
			//切换至工作目录
			boolean isChange = ftpClient.changeWorkingDirectory("cuihua");
			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 creatDate = f.getTimestamp().getTime();
				
				//日期格式化
				String createDatestr = sdf.format(creatDate);
				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();
			}
		} 
		
		
	}

}

三上传至FTP服务器

JButton btnUpload = new JButton("上传至FTP服务器");
			ImageIcon excelUploadIcon = new ImageIcon(MainFrame.class.getResource("/com/com/imgs/服务器.png"));
			btnUpload.setIcon(excelUploadIcon);
			btnUpload.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					//获取列头
					Vector<String> colNameVector = Utils.convertTo(cboType.getModel());
					
					//获取数据
					if (searchdataModel == null) {
						searchdataModel = dataModel;
					}
					Vector<Vector<Object>> dataVector = searchdataModel.getDataVector();
					
					//传入并调用
					DataHandlerService dhs = new DataHandlerService();
					
					boolean isUpload = dhs.uploadToFTP(colNameVector, dataVector);
					if(isUpload) {
						JOptionPane.showMessageDialog(null, "导出成功","系统提示",JOptionPane.INFORMATION_MESSAGE);
						lblmessage.setToolTipText(String.format("已上传%d行数据", searchdataModel.getDataVector().size()));
					}else {
						JOptionPane.showMessageDialog(null, "导出失败","系统提示",JOptionPane.ERROR_MESSAGE);
					}
				
					
				}
			});

四在FT服务器选择下载文件

public boolean downloadFileFromFTP (String excelFileName) {
	FTPClient ftpclient = new FTPClient();
	File uploadDir = new File("F:\\zuoye\\download");
	if(!uploadDir.exists()) {
		uploadDir.mkdir();
	}
	try(FileOutputStream out = new FileOutputStream("F:\\zuoye\\download\\"+ excelFileName)) {
		ftpclient.connect("192.168.254.185",21);
		boolean isLogin = ftpclient.login("admin", "admin");
		System.out.println("登陆成功:" + isLogin);
		
		ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE);
		boolean isretrieve = ftpclient.retrieveFile(excelFileName, out);
		return isretrieve;
	} catch (SocketException e) {
	
		e.printStackTrace();
		return false;
	} catch (IOException e) {
		
		e.printStackTrace();
		return false;
	}finally {
		try {
			ftpclient.disconnect();
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}
	}
	
	
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值