--目录文件处理类--
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());
}
}