importcom.enterprisedt.net.ftp.FTPException;importcom.enterprisedt.net.ftp.FTPFile;importcom.enterprisedt.net.ftp.FileTransferClient;importcom.enterprisedt.net.ftp.WriteMode;importorg.apache.commons.logging.Log;importorg.apache.commons.logging.LogFactory;importjava.io.File;importjava.io.IOException;importjava.text.ParseException;/*** edtftpj-2.0.3 工具简单封装测试
*
*@authorleizhimin 2008-9-19 13:33:03*/
public classFtpUtil {private static Log log = LogFactory.getLog(FtpUtil.class);private FileTransferClient client = null;public static void main(String[] args) throwsFTPException, IOException {
FtpUtil ftp= newFtpUtil();//ftp.connectServer();
File file = new File("C:\\ooo\\upx");
UploadListener listener= newUploadListener(ftp.client);
ftp.ftpUploadFolder(file, listener);
ftp.ftpDownload("c:\\new1111.gif", "/upx/down.gif");
ftp.disconnect();
}publicFtpUtil() {this.connectServer();
}publicFileTransferClient getClient() {returnclient;
}/*** 连接ftp服务器
*
*@return连接成功标识*/
public booleanconnectServer() {boolean flag = false;
client= newFileTransferClient();try{
client.setUserName("admin");
client.setPassword("123");
client.setRemoteHost("localhost");
client.setRemotePort(21);
client.setTimeout(1200);
client.setEventListener(newUploadListener(client));
client.getAdvancedSettings().setTransferBufferSize(1000);
client.getAdvancedSettings().setTransferNotifyInterval(5000);
client.getAdvancedSettings().setControlEncoding("GBK");
client.connect();
flag= true;
}catch(FTPException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}returnflag;
}/*** 关闭FTP客户端连接
*
*@return关闭成功标识*/
public booleandisconnect() {boolean flag = false;try{
client.disconnect();
flag= true;
}catch(FTPException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}returnflag;
}/*** 上传文件
*
*@paramfile 文件
*@paramul 监听器*/
public voidftpUploadFile(File file, UploadListener ul) {
String fileName=file.getName();
String filePath=file.getPath();try{
client.uploadFile(filePath, fileName, WriteMode.RESUME);int len = (int) client.getSize(fileName);
log.info("上传文件" + filePath + "完成,大小为" + len + "字节!");
}catch(FTPException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}/*** 上传文件(夹)
*
*@paramfile 上传文件
*@paramul 上传监听器*/
public voidftpUploadFolder(File file, UploadListener ul) {if(file.isFile()) {
ftpUploadFile(file, ul);
}try{if(file.isDirectory()) {
FTPFile[] ftpFiles=client.directoryList();boolean isExist = false;//遍历FTP当前目录的文件文件名,如果存在则停止查找,如果不存在则设计标记为不存在
for(FTPFile ftpFile : ftpFiles) {if(ftpFile.getName().equals(file.getName())) {
isExist= true;break;
}
}//如果要上传的目录不存在,则创建上传目录
if (!isExist) {
client.createDirectory(file.getName());
}//设置当前目录
client.changeDirectory(file.getName());//上传文件的列表
File[] upFiles =file.listFiles();for(File upFile : upFiles) {if(upFile.isFile()) {
ftpUploadFile(upFile, ul);
}else if(upFile.isDirectory()) {
ftpUploadFolder(upFile, ul);
}
}
client.changeToParentDirectory();
}
}catch(FTPException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}catch(ParseException e) {
e.printStackTrace();
}
}/*** 下载文件
*
*@paramlocalFileName 本地文件名
*@paramremoteFileName 远程文件名
*@throwsFTPException
*@throwsIOException*/
public void ftpDownload(String localFileName, String remoteFileName) throwsFTPException, IOException {
client.downloadFile(localFileName, remoteFileName, WriteMode.OVERWRITE);
}
}