FTP---上传下载文件

该博客介绍了一个Java实现的FTP文件操作工具类,包括登录FTP服务器、下载文件、上传文件的功能。工具类提供了静态方法,如`login()`用于建立FTP连接,`downloadFile()`用于从FTP服务器下载文件到本地,`uploadFile()`用于将本地文件上传到FTP服务器。示例代码展示了如何使用这些方法进行实际操作。
摘要由CSDN通过智能技术生成
package com.tao.ftpserver.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

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



public class FtpFileUtils {

    //登录连接
    public static FTPClient login(String ip ,Integer port ,String username, String password) {
        FTPClient ftpClient = null;
        try {
            //创建一个FTPClient对象
            ftpClient = new FTPClient();
            //创建ftp连接
            ftpClient.connect(ip, port);
            //登录ftp,使用用户名和密码,没有设置的话使用anonymous,密码随意
            ftpClient.login(username, password);
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            ftpClient.enterLocalPassiveMode();
            ftpClient.setBufferSize(1024*1024*100);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return ftpClient;
    }

    //对.exe文件进行处理
    private static String handleFile(String file) {
        String text = file.replaceAll(".exe", "");
        return text;
    }

    //下载文件
    public static ResultUtils downloadFile(FTPClient ftpClient,String sourceFile,String sourceName,String targetFile) {
        OutputStream ios = null;
        File localFile = null;
        try {
            String[] fileRoute = sourceFile.split("/");
            for(int i = 0; i < fileRoute.length; i++) {
                ftpClient.changeWorkingDirectory(fileRoute[i]);
            }
            FTPFile[] listFiles = ftpClient.listFiles(sourceName);
            if(listFiles.length > 0) {
                localFile = new File(targetFile+"/"+listFiles[0].getName());
                //先判断文件是否存在,如果存在就不重复下载
                if(!localFile.exists()) {
                    ios = new FileOutputStream(localFile);
                    ftpClient.retrieveFile(listFiles[0].getName(), ios);

                }
            }
        } catch (IOException e) {
            e.printStackTrace();
            return new ResultUtils("下载失败",0,false,ftpClient);
        }finally {
            try {
                if(ios != null) {
                    ios.close();
                }
                close(ftpClient);
            }catch(Exception e) {
                e.printStackTrace();
            }

        }
        return new ResultUtils("下载成功",1,true,ftpClient);

    }

    //关闭连接
    private static void close(FTPClient ftpClient) {
        try {
            ftpClient.logout();
            ftpClient.disconnect();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * ftp上传文件
     *
     */
    public static int uploadFile(FTPClient ftpClient, File file,List<String> fileRoute,String materialId,String name) {

        FileInputStream input = null;
        long startTime = 0;
        long endTime = 0;
        try {
            input = new FileInputStream(file);
            for(int i = 0; i < fileRoute.size(); i++) {
                ftpClient.makeDirectory(fileRoute.get(i));
                ftpClient.changeWorkingDirectory(fileRoute.get(i));
            }
            //String[] split = name.split("/.");
            //上传文件
            startTime = System.currentTimeMillis();
            ftpClient.storeFile( materialId+"."+name, input);
            endTime = System.currentTimeMillis();
            System.out.println(endTime - startTime);
        }catch (IOException e) {
            e.printStackTrace();
        }finally {
            close(ftpClient);
            if(input != null) {
                try {
                    input.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return (int) (endTime - startTime);
    }


    public static void main(String[] args) {

        FTPClient ftpClient = login("192.168.11.1",21,"anonymous","anonymous");
        File file = new File("D:/all/practice/Downloads.rar");
        List<String> fileRoute = new ArrayList<String>();
        fileRoute.add("1");
        fileRoute.add("2");
        //uploadFile(ftpClient, file,fileRoute, "11", "rar");     			   		   downloadFile(ftpClient,"D:/all/practice/ftp/1/2","11.rar",
        "D:/all/practice/ftp");
    }

}


  • uploadFile,上传指定文件到配置的ftp路径
  • downloadFile,下载指定的文件到本地自定义路径
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值