FTP服务器上传下载文件(edtftpj-pro-2.1.2)


--目录文件处理类--

import java.io.FileFilter;
import java.io.IOException;

import com.enterprisedt.net.ftp.FTPClient;
import com.enterprisedt.net.ftp.FTPException;
import com.enterprisedt.net.ftp.pro.ProFTPClient;

/**
 * 多文件FTP处理类
 * (license.jar的注册时间过期后需要重新生成key文件)
 * @author lancelot
 * @date 2009-01-07
 */
public class MultipleFTPFile
{  
    private  String DEFAULT_HOST="192.168.1.111";  //默认FTP服务器IP地址
    private  String DEFAULT_USER_NAME="rsftp";     //默认用户名
    private  String DEFAULT_PASSWORD="rsftp123";   //默认密码
    protected FileFilter fileExtFilter=new FileExtensionFilter();  //文件过滤器
    protected ProFTPClient pftpClient;  //批处理客户端连接
    public MultipleFTPFile()
    {
        initPFTPClient(DEFAULT_HOST,DEFAULT_USER_NAME,DEFAULT_PASSWORD);
    }
   
    public MultipleFTPFile(String host,String userName,String password)
    {
        this.DEFAULT_HOST=host;
        this.DEFAULT_USER_NAME=userName;
        this.DEFAULT_PASSWORD=password;
        initPFTPClient(DEFAULT_HOST,DEFAULT_USER_NAME,DEFAULT_PASSWORD);
    }
    /**
     * 初始化客户端连接
     * @param host
     * @param userName
     * @param password
     */
    public void initPFTPClient(String host,String userName,String password)
    {
        if(pftpClient==null)
            pftpClient= new ProFTPClient();
        try
        {
            pftpClient.setRemoteHost(host);
            pftpClient.connect();
            pftpClient.login(userName, password);
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
//            //log.error(e.getMessage(),e);
            pftpClient=null;
        }
        catch (FTPException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
            //log.error(e.getMessage(),e);
            pftpClient=null;
        }
    }
    /**
     * 关闭连接
     */
    public void exitPFTPConn()
    {
        if(pftpClient==null)
            return;
        try
        {
            pftpClient.quit();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
            //log.error(e.getMessage(),e);
           
        }
        catch (FTPException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
            //log.error(e.getMessage(),e);
        }
    }
    /**
     * 从FTP服务器批量删除文件
     * @param localFileNameList
     */
    public boolean deleteDir(String remoteDirName)
    {
        if(pftpClient==null)
        {
            return false;
        }
        try
        {   
            pftpClient.rmdir(remoteDirName, true);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            //log.error(e.getMessage(),e);
            return false;
        }
        return true;
    }
    /**
     * 从FTP服务器下载文件
     * @param fileName
     * @return
     */
    public boolean downLoad(String localDirName,String remoteDirName,String fileExt)
    {
        if(pftpClient==null)
            return false;
        if(fileExt==null)
            fileExt="*.jpg";
        try
        {
            pftpClient.mget(localDirName, remoteDirName, fileExt, true);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            //log.error(e.getMessage(),e);
            return false;
        }
        return true;
    }
    /**
     * 上传目录文件到FTP服务器
     * @param localFileName
     * @param remoteFileName
     * @param remoteDirName
     * @return
     */
    public boolean uploadFile(String localDir,String remoteDir,String fileExt)
    {
        if(fileExt==null)
            fileExt="*.html";
        try
        {
            pftpClient.mput(localDir, remoteDir, fileExt, true);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            //log.error(e.getMessage(),e);
            return false;
        }
        return true;
    }
   
    public static void  main(String[] args)
    {
        MultipleFTPFile mftp=new MultipleFTPFile();
        mftp.deleteDir("test");
        mftp.exitPFTPConn();
    }
}
--单文件处理类--
/*
 *
 * Copyright (C) 2006 Enterprise Distributed Technologies Ltd
 *
 * www.enterprisedt.com
 */

import com.enterprisedt.net.ftp.FTPClient;
import com.enterprisedt.net.ftp.FTPException;
import com.enterprisedt.net.ftp.pro.ProFTPClient;


import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 从FTP服务器上传下载文件
 * @author lancelot
 * @date 2008-11-26
 */
public class OperationFTPFile
{
    private  String DEFAULT_HOST="192.168.1.111";  //默认FTP服务器IP地址
    private  String DEFAULT_USER_NAME="rsftp";     //默认用户名
    private  String DEFAULT_PASSWORD="rsftp123";   //默认密码
    protected FTPClient ftpClient;
    protected FileFilter fileExtFilter=new FileExtensionFilter();  //文件过滤器
   
    /**
     * 日志对象
     */
//    private static JLogger  log = LoggerFactory.getLogger(OperationFTPFile.class);

   
    public OperationFTPFile()
    {
        initFTPClient(DEFAULT_HOST,DEFAULT_USER_NAME,DEFAULT_PASSWORD);
    }
   
    public OperationFTPFile(String host,String userName,String password)
    {
        this.DEFAULT_HOST=host;
        this.DEFAULT_USER_NAME=userName;
        this.DEFAULT_PASSWORD=password;
        initFTPClient(DEFAULT_HOST,DEFAULT_USER_NAME,DEFAULT_PASSWORD);
    }
   
    /**
     * 初始化客户端连接
     * @param host
     * @param userName
     * @param password
     */
    public void initFTPClient(String host,String userName,String password)
    {
        if(ftpClient==null)
            ftpClient= new FTPClient();
        try
        {
            ftpClient.setRemoteHost(host);
            ftpClient.connect();
            ftpClient.login(userName, password);
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
//            //log.error(e.getMessage(),e);
            ftpClient=null;
        }
        catch (FTPException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
            //log.error(e.getMessage(),e);
            ftpClient=null;
        }
    }

   
    /**
     * 上传文件到FTP服务器(默认目录)
     * @param fileName
     * @return
     */
    public boolean uploadFile(String localFileName,String remoteFileName)
    {
        try
        {
            ftpClient.put(localFileName, remoteFileName);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            //log.error(e.getMessage(),e);
            return false;
        }
        return true;
    }
    /**
     * 上传文件到FTP服务器(指定目录)
     * @param localFileName
     * @param remoteFileName
     * @param remoteDirName
     * @return
     */
    public boolean uploadFile(String localFileName,String remoteFileName,String remoteDirName)
    {
        try
        {
            if(remoteDirName!=null&&!remoteDirName.equals(""))
                createActiveDir(remoteDirName,true);
            ftpClient.put(localFileName, remoteFileName);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            //log.error(e.getMessage(),e);
            return false;
        }
        return true;
    }
   
    /**
     * 从FTP服务器下载文件
     * @param fileName
     * @return
     */
    public boolean downLoad(String localFileName,String remoteFileName)
    {
        if(ftpClient==null)
            return false;
        try
        {
            ftpClient.get(localFileName, remoteFileName);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            //log.error(e.getMessage(),e);
            return false;
        }
        return true;
    }
    /**
     * 从FTP服务器删除文件
     * @param fileName
     * @return
     */
    public boolean deleteFile(String remoteFileName)
    {
        if(ftpClient==null)
            return false;
        try
        {
            ftpClient.delete(remoteFileName);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            //log.error(e.getMessage(),e);
            return false;
        }
        return true;
    }
   
    /**
     * 批量上传文件到FTP服务器(任意目录结构到FTP默认目录下)
     * @param localFileNameList
     */
    public  boolean uploadAllFilesAndDir(String localDirName)
    {
        if(ftpClient==null)
            return false;
        List dirList=new ArrayList();
        try
        {
            File file=new File(localDirName);
            String workDir="";
//            //System.out.println(file.getName());
            if(file.isDirectory())
            {
                //在FTP上创建当前目录并到该目录下工作
                createActiveDir(localDirName,false);
                File[] files=file.listFiles();
                if(files!=null&&files.length>0)
                {
                   
                    for(int i=0;i<files.length;i++)
                    {
                        //如果是目录则递归查找下面的文件和子目录
                        if(files[i].isDirectory())
                        {
//                            uploadAllFilesAndDir(localDirName+"/"+files[i].getName());
                            dirList.add(localDirName+"/"+files[i].getName());
                        }
                        else
                        {
                            //符合条件的文件则上传
                            if(fileExtFilter.accept(files[i]))
                            {
                                ftpClient.put(localDirName+"/"+files[i].getName(), files[i].getName());
//                                //System.out.println("FILE NAME IS:"+localDirName+"/"+files[i].getName());
                            }
                        }
                    }
                    //递归上传所有子目录
                    if(dirList.size()>0)
                    {
                        for(int i=0;i<dirList.size();i++)
                        {
                            uploadAllFilesAndDir((String)dirList.get(i));
                        }
                    }
                }
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
            //log.error(e.getMessage(),e);
            return false;
        }
        return true;
    }
   
    /**
     * 批量上传文件到FTP服务器(任意目录结构)
     * @param localFileNameList
     * @param remoteDirName
     */
    public  boolean uploadAllFilesAndDir(String localDirName,String remoteDirName)
    {
        if(ftpClient==null)
            return false;
        try
        {
            File file=new File(localDirName);
//            //System.out.println(file.getName());
            if(file.isDirectory())
            {
                //在FTP上创建指定目录并到该目录下工作
                createActiveDir(remoteDirName,false);
                File[] files=file.listFiles();
                if(files!=null&&files.length>0)
                {
                   
                    for(int i=0;i<files.length;i++)
                    {
                        //如果是目录则递归查找下面的文件和子目录
                        if(files[i].isDirectory())
                        {
                            uploadAllFilesAndDir(localDirName+"/"+files[i].getName(),remoteDirName+"/"+files[i].getName());
                        }
                        else
                        {
                            //符合条件的文件则上传
                            if(fileExtFilter.accept(files[i]))
                            {
                                //每次上传文件前将FTP工作目录移动到文件的当前目录下
                                checkFolderIsExist(remoteDirName);
                                //上传文件
                                ftpClient.put(localDirName+"/"+files[i].getName(), files[i].getName());
                            }
                           
                        }
                    }
                }
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
            //log.error(e.getMessage(),e);
            return false;
        }
        return true;
    }
   
    /**
     * 批量上传文件到FTP服务器(指定目录下无子目录)
     * @param localFileNameList
     */
    public boolean uploadAllFiles(String localDirName,String remoteDirName)
    {
        if(ftpClient==null)
            return false;
        List directoryList=new ArrayList();
        try
        {
            File file=new File(localDirName);
            if(file.isDirectory())
            {
                //首先创建当前目录并到该目录下工作
                createActiveDir(remoteDirName,true);
                File[] files=file.listFiles();
                if(files!=null&&files.length>0)
                {
                    for(int i=0;i<files.length;i++)
                    {
                        //如果是符合条件的文件则上传到FTP服务器
                        if(files[i].isFile()&&fileExtFilter.accept(files[i]))
                            ftpClient.put(localDirName+"/"+files[i].getName(), files[i].getName());
                    }
                }
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
            //log.error(e.getMessage(),e);
            return false;
        }
        return true;
    }

   
    /**
     * FTP服务器-创建目录
     * @param fileName
     * @param isMultiple 是否创建多级目录
     * @return
     */
    public boolean createActiveDir(String remoteDirName,boolean isMultiple)
    {
        try
        {
            String[] dirs=remoteDirName.split("/");
//            System.out.println("remote Directory:"+dirs.length);
            //根据不同的分隔符解析目录路径
            if(dirs==null||dirs.length==0)
            {
                dirs=remoteDirName.split("//");
            }
            if(dirs==null||dirs.length==0)
            {
                return false;
            }
            //循环创建路径中包含的目录
            if(isMultiple)
            {
                String currentDir="";
                for(int i=0;i<dirs.length;i++)
                {
                   
                    try
                    {
                        if(dirs[i].indexOf(":")<0&&!checkFolderIsExist(currentDir+dirs[i]+"/"))
                        {
                            if(!currentDir.equals(""))
                                ftpClient.chdir(currentDir);
                            ftpClient.mkdir(dirs[i]);
                        }   
                    }
                    catch(Exception e)
                    {
                        //System.out.println("Failed Directory:"+dirs[i]);
//                        e.printStackTrace();
                        //log.error(e.getMessage(),e);
                    }
                    currentDir+=dirs[i]+"/";
                }
            }
            else
            {
                if(!checkFolderIsExist(remoteDirName))
                {
                    ftpClient.mkdir(dirs[dirs.length-1]);
                    ftpClient.chdir(dirs[dirs.length-1]);
                }
            }
           
//            System.out.println("remote Directory:"+remoteDirName);
//            ftpClient.chdir(remoteDirName);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            //log.error(e.getMessage(),e);
            System.out.println("remote Directory(Exception):"+remoteDirName);
            return false;
        }
        return true;
    }
    /**
     * 关闭连接
     */
    public void exitFTPConn()
    {
        if(ftpClient==null)
            return;
        try
        {
            ftpClient.quit();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
            //log.error(e.getMessage(),e);
           
        }
        catch (FTPException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
            //log.error(e.getMessage(),e);
        }
    }
   
    /**
     * 检查FTP服务器上当前工作目录下是否存在指定的文件夹
     * @param remoteDirName
     * @return boolean
     *
     */
    public boolean checkFolderIsExist(String remoteDirName)
    {
        boolean result=false;
       
        try
        {
            if(ftpClient.connected())
            {
                ftpClient.quit();
                initFTPClient(DEFAULT_HOST,DEFAULT_USER_NAME,DEFAULT_PASSWORD);
            }
            if(remoteDirName.endsWith("/"))
            {
                remoteDirName=remoteDirName.substring(0,remoteDirName.length()-1);
            }
//            System.out.println("remoteDirName="+remoteDirName);
            ftpClient.chdir(remoteDirName);
            result=true;
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
//            e.printStackTrace();
        }
        catch (FTPException e)
        {
            // TODO Auto-generated catch block
//            e.printStackTrace();
        }
        return result;
    }
    public static void main(String[] args)
    {
        OperationFTPFile oftp=new OperationFTPFile();
//        oftp.deleteDir("test");
//        oftp.uploadAllFiles("E:/Tomcat5/webapps/CMS/tmp/449706","449706");
        oftp.uploadAllFilesAndDir("D:/test","test");
//        boolean result= oftp.checkFolderIsExist("test/img");
//        System.out.println(result);
        oftp.exitFTPConn();
    }
}

import java.io.File;
import java.io.FileFilter;
/**
 * 文件扩展名过滤器
 * @author lancelot
 * @date 2008-11-26
 */

public class FileExtensionFilter implements FileFilter
{
    private String UPLOAD_FILE_EXTENSION="html,htm,png,gig,swf,jpg,jpeg,txt,doc";
    public boolean accept(File pathName)
    {
        return (UPLOAD_FILE_EXTENSION.indexOf(getFileExtension(pathName.getName()))>-1);
    }
    /**
     * 截取文件扩展名
     * @param fileName
     * @return
     */
    public String getFileExtension(String fileName)
    {
        System.out.println("file name:"+fileName);
        return fileName.substring(fileName.lastIndexOf(".")+1,fileName.length());
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值