package com.htal.msexchange.web.util;
import java.io.File;
import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.enterprisedt.net.ftp.FTPClient;
import com.enterprisedt.net.ftp.FTPConnectMode;
import com.enterprisedt.net.ftp.FTPException;
import com.enterprisedt.net.ftp.FTPTransferType;
public final class FtpUtil {
private static Logger logger = LoggerFactory.getLogger(FtpUtil.class);
/**
* 下载文件
* @param ftpip 远程主机IP地址
* @param ftpuser 远程主机FTP用户名
* @param ftppwd 远程主机FTP密码
* @param ftpremotepath 远程主机FTP文件的存放路径
* @param getfilepath 将下载的文件存放在本地的路径
* @return
*/
public static boolean downloadFile(String ftpip,String ftpuser,String ftppwd,String ftpremotepath,String getfilepath) {
logger.info("File Download");
FTPClient ftp = null;
try {
/** 创建FTPClient */
ftp = new FTPClient();
/** 连接服务器 */
ftp.setRemoteHost(ftpip);
ftp.connect();
/** 登陆 */
ftp.login(ftpuser, ftppwd);
/** 以波动模式连接 */
ftp.setConnectMode(FTPConnectMode.PASV);
/** ASCII方式:只能传输一些如txt文本文件,
* zip、jpg等文件需要使用BINARY方式
* */
ftp.setType(FTPTransferType.BINARY);
/** 切换到主目录,并枚举主目录的所有文件及文件夹
* 包括日期、文件大小等详细信息
* files = ftp.dir("."),则只有文件名
*/
/** 下载目标文件夹下的所有文件到 指定 目录下 */
File attachments = new File(getfilepath);
/** 如果文件夹不存在,则创建 */
if (!attachments.exists()) {
attachments.mkdir();
}
/** 获取文件夹下的所有文件 */
String[] files = ftp.dir(ftpremotepath, false);
if (files != null && files.length > 0) {
for (int i = 0; i < files.length; i++) {
/** 下载文件 */
String filename = files[i].substring(files[i].lastIndexOf("/")+1);
logger.info("absolute path:"+files[i]);
logger.info("filename:"+filename);
ftp.get(getfilepath + filename, files[i]);
/** 下载后删除文件 */
ftp.delete(files[i]);
logger.info(filename + " File delete OK");
logger.info("下载文件成功!"+filename);
}
} else {
logger.info("无文件需要下载!");
}
return true;
} catch (Exception ex) {
ex.printStackTrace();
logger.error("ftp download file error:" + ex.getMessage());
} finally {
try {
/** 断开连接 */
if (ftp != null)
ftp.quit();
} catch (IOException e) {
e.printStackTrace();
} catch (FTPException e) {
e.printStackTrace();
}
}
return false;
}
/**
* 上传文件
* @param ftpip 远程主机IP地址
* @param ftpuser 远程主机FTP用户名
* @param ftppwd 远程主机FTP密码
* @param ftpremotepath 远程主机FTP文件的存放路径
* @param putfilepath 上传文件存放在本地的路径
* @param filename 上传文件的文件名
* @return
*/
public static boolean uploadFile(String ftpip, String ftpuser, String ftppwd, String ftpremotepath, String putfilepath, String filename) {
logger.info("File Upload");
FTPClient ftp = null; // ftp 客户端实例化
try {
/** 创建FTPClient */
ftp = new FTPClient();
/** 连接服务器 */
ftp.setRemoteHost(ftpip);
ftp.connect();
/** 登陆 */
ftp.login(ftpuser, ftppwd);
/** 以波动模式连接 */
ftp.setConnectMode(FTPConnectMode.PASV);
/** ASCII方式:只能传输一些如txt文本文件,
* zip、jpg等文件需要使用BINARY方式
* */
ftp.setType(FTPTransferType.BINARY);
/** 上传文件到服务器指定目录 */
ftp.put(putfilepath + filename, ftpremotepath + filename);
logger.info("上传文件成功!"+filename);
return true;
} catch (Exception ex) {
ex.printStackTrace();
logger.error("ftp upload file error:" + ex.getMessage());
} finally {
try {
/** 断开连接 */
if (ftp != null)
ftp.quit();
} catch (IOException e) {
e.printStackTrace();
} catch (FTPException e) {
e.printStackTrace();
}
}
return false;
}
}
import java.io.File;
import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.enterprisedt.net.ftp.FTPClient;
import com.enterprisedt.net.ftp.FTPConnectMode;
import com.enterprisedt.net.ftp.FTPException;
import com.enterprisedt.net.ftp.FTPTransferType;
public final class FtpUtil {
private static Logger logger = LoggerFactory.getLogger(FtpUtil.class);
/**
* 下载文件
* @param ftpip 远程主机IP地址
* @param ftpuser 远程主机FTP用户名
* @param ftppwd 远程主机FTP密码
* @param ftpremotepath 远程主机FTP文件的存放路径
* @param getfilepath 将下载的文件存放在本地的路径
* @return
*/
public static boolean downloadFile(String ftpip,String ftpuser,String ftppwd,String ftpremotepath,String getfilepath) {
logger.info("File Download");
FTPClient ftp = null;
try {
/** 创建FTPClient */
ftp = new FTPClient();
/** 连接服务器 */
ftp.setRemoteHost(ftpip);
ftp.connect();
/** 登陆 */
ftp.login(ftpuser, ftppwd);
/** 以波动模式连接 */
ftp.setConnectMode(FTPConnectMode.PASV);
/** ASCII方式:只能传输一些如txt文本文件,
* zip、jpg等文件需要使用BINARY方式
* */
ftp.setType(FTPTransferType.BINARY);
/** 切换到主目录,并枚举主目录的所有文件及文件夹
* 包括日期、文件大小等详细信息
* files = ftp.dir("."),则只有文件名
*/
/** 下载目标文件夹下的所有文件到 指定 目录下 */
File attachments = new File(getfilepath);
/** 如果文件夹不存在,则创建 */
if (!attachments.exists()) {
attachments.mkdir();
}
/** 获取文件夹下的所有文件 */
String[] files = ftp.dir(ftpremotepath, false);
if (files != null && files.length > 0) {
for (int i = 0; i < files.length; i++) {
/** 下载文件 */
String filename = files[i].substring(files[i].lastIndexOf("/")+1);
logger.info("absolute path:"+files[i]);
logger.info("filename:"+filename);
ftp.get(getfilepath + filename, files[i]);
/** 下载后删除文件 */
ftp.delete(files[i]);
logger.info(filename + " File delete OK");
logger.info("下载文件成功!"+filename);
}
} else {
logger.info("无文件需要下载!");
}
return true;
} catch (Exception ex) {
ex.printStackTrace();
logger.error("ftp download file error:" + ex.getMessage());
} finally {
try {
/** 断开连接 */
if (ftp != null)
ftp.quit();
} catch (IOException e) {
e.printStackTrace();
} catch (FTPException e) {
e.printStackTrace();
}
}
return false;
}
/**
* 上传文件
* @param ftpip 远程主机IP地址
* @param ftpuser 远程主机FTP用户名
* @param ftppwd 远程主机FTP密码
* @param ftpremotepath 远程主机FTP文件的存放路径
* @param putfilepath 上传文件存放在本地的路径
* @param filename 上传文件的文件名
* @return
*/
public static boolean uploadFile(String ftpip, String ftpuser, String ftppwd, String ftpremotepath, String putfilepath, String filename) {
logger.info("File Upload");
FTPClient ftp = null; // ftp 客户端实例化
try {
/** 创建FTPClient */
ftp = new FTPClient();
/** 连接服务器 */
ftp.setRemoteHost(ftpip);
ftp.connect();
/** 登陆 */
ftp.login(ftpuser, ftppwd);
/** 以波动模式连接 */
ftp.setConnectMode(FTPConnectMode.PASV);
/** ASCII方式:只能传输一些如txt文本文件,
* zip、jpg等文件需要使用BINARY方式
* */
ftp.setType(FTPTransferType.BINARY);
/** 上传文件到服务器指定目录 */
ftp.put(putfilepath + filename, ftpremotepath + filename);
logger.info("上传文件成功!"+filename);
return true;
} catch (Exception ex) {
ex.printStackTrace();
logger.error("ftp upload file error:" + ex.getMessage());
} finally {
try {
/** 断开连接 */
if (ftp != null)
ftp.quit();
} catch (IOException e) {
e.printStackTrace();
} catch (FTPException e) {
e.printStackTrace();
}
}
return false;
}
}