日期:2014-05-16 浏览次数:21038 次
package com.shine.Ftp.util;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;
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.FTPListParseEngine;
import org.apache.commons.net.ftp.FTPReply;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class FtpHelper {
private FTPClient ftp = null;
/**
* Ftp服务器
*/
private String server;
/**
* 用户名
*/
private String uname;
/**
* 密码
*/
private String password;
/**
* 连接端口,默认21
*/
private int port = 21;
private Document document ;
public FtpHelper(String server, int port, String uname,
String password){
this.server = server;
if (this.port > 0){
this.port = port;
}
this.uname = uname;
this.password = password;
//初始化
ftp = new FTPClient();
}
/**
* 连接FTP服务器
*
* @param server
* @param uname
* @param password
* @return
* @throws Exception
*/
public FTPClient connectFTPServer() throws Exception {
try {
ftp.configure(getFTPClientConfig());
ftp.connect(this.server, this.port);
if (!ftp.login(this.uname, this.password)) {
ftp.logout();
ftp = null;
return ftp;
}
// 文件类型,默认是ASCII
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.setControlEncoding("GBK");
// 设置被动模式
ftp.enterLocalPassiveMode();
ftp.setConnectTimeout(2000);
ftp.setBufferSize(1024);
// 响应信息
int replyCode = ftp.getReplyCode();
if ((!FTPReply.isPositiveCompletion(replyCode))) {
// 关闭Ftp连接
closeFTPClient();
// 释放空间
ftp = null;
throw new Exception("登录FTP服务器失败,请检查![Server:" + server + "、"
+ "User:" + uname + "、" + "Password:" + password);
} else {
return ftp;
}
} catch (Exception e) {
ftp.disconnect();
ftp = null;
throw e;
}
}
/**
* 配置FTP连接参数
*
* @return
* @throws Exception
*/
public FTPClientConfig getFTPClientConfig() throws Exception {
String systemKey = FTPClientConfig.SYST_NT;
String serverLanguageCode = "zh";
FTPClientConfig conf = new FTPClientConfig(systemKey);
conf.setServerLanguageCode(serverLanguageCode);
conf.setDefaultDateFormatStr("yyyy-MM-dd");
return conf;
}
/**
* 向FTP根目录上传文件
*
* @param localFile
* @param newName
* 新文件名
* @throws Exception
*/
public Boolean uploadFile(String localFile, String newName)
throws Exception {
InputStream input = null;
boolean success = false;
try {
File file = null;
if (checkFileExist(localFile)) {
file = new File(localFile);
}
input = new FileInputStream(file);
success = ftp.storeFile(newName, input);
if (!success) {
throw new Exception("文件上传失败!");
}
} catch (Exception e) {
throw e;
} finally {
if (input != null) {
input.close();
}
}
return success;
}
/**
* 向FTP根目录上传文件
*
* @param input
* @param newName
* 新文件名
* @throws Exception
*/
public Boolean uploadFile(InputStream input, String newName)
throws Exception {
boolean success = false;
try {
success = ftp.storeFile(newName, input);
if (!success) {
throw new Exception("文件上传失败!");
}
} catch (Exception e) {
throw e;
} finally {
if (input != null) {
input.close();
}
}
return success;
}
/**
* 向FTP指定路径上传文件
*
* @param localFile
* @param newName
* 新文件名
* @param remoteFoldPath
* @throws Exception
*/
public Boolean uploadFile(String localFile, St