0


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

一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;
        }
    }
    
    
}
标签: 网络 服务器 tcp/ip

本文转载自: https://blog.csdn.net/weixin_57248557/article/details/126214672
版权归原作者 新手(cuihua) 所有, 如有侵权,请联系我们删除。

“基于FTP协议的文件的上传与下载”的评论:

还没有评论