ftp 上传下载封装

这篇博客介绍了如何封装FTPUtil工具,专注于处理FTP上传和下载时涉及的多目录操作。提供了详细的上传和下载使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FTPUtil 工具的封装,此方法用于封装上传时多目录文件,单目录的可在注释部分寻找

package com.thinkgem.jeesite.common.utils;

import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.*;
import java.net.SocketException;
import java.net.URLDecoder;
import java.util.List;
import java.util.StringTokenizer;

import static com.thinkgem.jeesite.common.config.Global.getConfig;

/**
 * 与ftp服务进行连接
 */
public class FTPUtil {




    private static final Logger logger = LoggerFactory.getLogger(FTPUtil.class);

    private static FTPClient ftpClient = null;

    private final static String ftphostaddr = getConfig("ftphostaddr");//服务器地址
    private final static String ftppath = getConfig("ftppath");//操作的服务器目录
    private final static String ftpname = getConfig("ftpname");//服务器登录名
    private final static String ftppwd = getConfig("ftppwd");//登录密码
    private final static String ftpport = getConfig("ftpport");//登录端口

    private final static String localpath = getCurentContentPath();
    private final static String fileSeparator = getConfig("ftp.upload");
    private final static String upfile = getConfig("ftppath");





    public void downfile(String filename){
        this.loginFtp();
        downFile(filename);

    }


    /**
     * 从文件服务器上下载文件到本地
     * @param filename
     */
    public static void downFile(String filename) {
        try{
            String flieName = filename.substring(filename.lastIndexOf("/") + 1);
            logger.info("所要下载的文件名称fileName={}",flieName);
            //4.指定要下载的目录
            ftpClient.changeWorkingDirectory(StringUtils.remove(filename,flieName));// 转移到FTP服务器目录
            //5.遍历下载的目录
            ftpClient.enterLocalPassiveMode();
            FTPFile[] fs = ftpClient.listFiles();
            for (FTPFile ff : fs) {
                //解决中文乱码问题,两次解码
                byte[] bytes=ff.getName().getBytes("iso-8859-1");
                String fn=new String(bytes,"utf8");
                if (fn.equals(flieName)|| ff.getName().equals(flieName)) {
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值