日期:2014-05-16 浏览次数:20838 次
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