java操作FTP工具类
来源:互联网 发布:视频相片制作软件 编辑:程序博客网 时间:2024/05/18 13:05
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class FTPUtil {
private static final Logger logger = LoggerFactory.getLogger(FTPUtil.class);
private FTPClient ftpClient;
private boolean flag = false;// FTP的连接是否成功(成功true,失败)
private String charset = "UTF-8";
private String ip;
private int port;
private String loginName;
private String password;
private String ftpStoreFileSeparator;
// public static void main(String[] args) {
// FTPUtil ftp = new FTPUtil("10.83.14.156",21, "user", "bquser", null);
// //linux环境貌似用的是UTF-8
// ftp.upload(new File("D:\\document\\统计\\640.jpg"), "\\test12\\test\\", "图片2.jpg");
// ftp.upload(new File("D:\\document\\统计\\640.jpg"), "\\report\\", "图片哈哈哈.jpg");
// System.out.println("connect success");
// System.out.println("report\\图片哈哈哈.jpg");
// }
// public static void main(String[] args) {
// FTPUtil ftp = new FTPUtil("10.83.22.73",21, "slsfinace", "123456", null);
// //linux环境貌似用的是UTF-8
// boolean a = ftp.upload(new File("D:\\document\\统计\\640.jpg"), "\\report\\", "图片哈哈哈.jpg");
// System.out.println(a);
// System.out.println("connect success");
// System.out.println("report\\图片哈哈哈.jpg");
//}
/**
* FTP初始化
*
* @param ip
* @param loginName
* @param password
*/
public FTPUtil(String ip, int port, String loginName, String password, String charset, String ftpStoreFileSeparator) {
this.ip = ip;
this.port = port;
this.loginName = loginName;
this.password = password;
this.charset = charset;
this.ftpStoreFileSeparator = ftpStoreFileSeparator;
ftpClient = new FTPClient();
if (checkNotNull(ip) && checkNotNull(loginName) && checkNotNull(password)) {
if (checkNotNull(charset)) {
ftpClient.setControlEncoding(charset);
} else {
ftpClient.setControlEncoding(this.charset);
}
ftpClient.setBufferSize(1024 * 1024);// 向目标服务器写入文件缓冲大小限制
try {
ftpClient.connect(ip,port);
flag = ftpClient.login(loginName, password);
flag = ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);// 设置文件类型(二进制)
} catch (SocketException e) {
logger.error(e.getMessage(), e);
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
}
}
/**
* 关闭连接
*/
public boolean close() {
boolean flag = false;
try {
if (ftpClient!=null && ftpClient.isConnected()) {
flag = ftpClient.logout();
}
} catch (IOException e) {
logger.warn(e.getMessage(), e);
}
return flag;
}
/**
* 重命名文件
*
* @param from
* @param to
* @return
*/
public boolean rename(String from, String to)
{
boolean flag = false;
if (checkNotNull(from) && checkNotNull(to)) {
try {
flag = ftpClient.rename(from, to);
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
}
return flag;
}
/**
* 删除文件
*
* @param str
* @return
*/
public boolean deleteFile(String str) {
boolean flag = false;
if (checkNotNull(str)) {
try {
flag = ftpClient.deleteFile(str);
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
}
return flag;
}
/**
* 创建远程目录
* @param remotePath 不含文件名的远程路径(格式为/a/b/c)
* @return
*/
private boolean createRemoteFolder(String ftpFolder) throws IOException{
boolean flag = false;
String[] folders = ftpFolder.split(ftpStoreFileSeparator);
String remoteTempPath = "";
for(String folder : folders){
if(StringUtils.isNotBlank(folder)){
remoteTempPath += ftpStoreFileSeparator + folder;
flag = ftpClient.changeWorkingDirectory(remoteTempPath);
if(!flag){
flag = ftpClient.makeDirectory(remoteTempPath);
}
}
}
return flag;
}
/**
* 上传文件
* @param localFile 本地文件
* @param ftpFolder FTP服务器目录,以"\"(Windows)或"/"(Linux)开头
* @param ftpFileName 放在ftp时的文件名
* @return
*/
public boolean upload(File localFile, String ftpFolder, String ftpFileName) {
boolean flag = false;
FileInputStream fis = null;
if (checkNotNull(ftpFolder) && checkNotNull(ftpFileName) && this.flag) {
try {
fis = new FileInputStream(localFile);
flag = ftpClient.changeWorkingDirectory(ftpFolder);// 设置上传目录(/FI_voucher/)
if (!flag) {
// flag = ftpClient.makeDirectory(ftpFolder);
flag = createRemoteFolder(ftpFolder);
}
if (flag) {
flag = ftpClient.changeWorkingDirectory(ftpFolder);// 设置上传目录(/FI_voucher/)
}
if (flag){
flag = ftpClient.storeFile(ftpFileName, fis);// node.lib
}
} catch (FileNotFoundException e) {
logger.error(e.getMessage(), e);
} catch (IOException e) {
logger.error(e.getMessage(), e);
} finally {
IOUtils.closeQuietly(fis);
}
}
return flag;
}
/**
* 上传文件
*
* @param localFilePath
* 本地路径
* @param ftpFilePath
* FTP服务器路径
* @return
*/
public boolean upload(String localFilePath, String ftpFolder, String ftpFileName) {
boolean flag = false;
if (checkNotNull(localFilePath) && checkNotNull(ftpFolder) && checkNotNull(ftpFileName)) {
File srcFile = new File(localFilePath);
flag = this.upload(srcFile, ftpFolder, ftpFileName);
}
return flag;
}
/**
* 下载文件
*
* @param localFilePath
* 本地路径
* @param ftpFilePath
* FTP服务器路径
* @return
*/
public boolean download(String localFilePath, String ftpFilePath) {
boolean flag = false;
FileOutputStream fos = null;
if (checkNotNull(localFilePath) && checkNotNull(ftpFilePath) && this.flag) {
try {
fos = new FileOutputStream(localFilePath);// c:\\node.lib
flag = ftpClient.retrieveFile(ftpFilePath, fos);// /FI_voucher/node.lib
} catch (FileNotFoundException e) {
logger.error(e.getMessage(), e);
} catch (IOException e) {
logger.error(e.getMessage(), e);
} finally {
IOUtils.closeQuietly(fos);
}
}
return flag;
}
/**
* 检查String是否为空
*
* @param str
* @return 为空返回false,不为空返回true
*/
private boolean checkNotNull(String str) {
boolean flag = false;
if (StringUtils.isNotBlank(str)) {
flag = true;
}
return flag;
}
public String getCharset() {
return charset;
}
public String getIp() {
return ip;
}
public int getPort() {
return port;
}
public String getLoginName() {
return loginName;
}
public String getPassword() {
return password;
}
public String getFtpStoreFileSeparator() {
return ftpStoreFileSeparator;
}
}
阅读全文
0 0
- java操作FTP工具类
- java操作FTP服务器通用工具类
- java ftp工具类
- Java FTP工具类
- FtpClient FTP操作工具类
- JAVA的FTP工具类
- Java FTP简单工具类
- JAVA的FTP工具类
- java FTP 工具类 同步文件夹 下载文件..等操作(FtpHelper 需要commons-net-3.5.jar)
- Java FTP上传文件工具类
- ftp上传工具类(java)
- java ftp 工具
- 最经典的Java FTP操作类
- java操作FTP
- java 中的 Ftp操作
- java FTP操作
- Java进行FTP操作
- java ftp操作001
- kohana 伪静态的htaccess设置
- gitlab搭建提示inet_interfacesJob for postfix.service failed because the control process exited with erro
- java单例模式引起的一些思考和了解
- RecyclerView滑动到底部的时候点击按钮直接返回顶部
- leetcode-month1-week3
- java操作FTP工具类
- idea window快捷键
- # 两和
- 干货分享:RS485通信和Modbus通信协议汇总
- 聚类FCM算法
- docker 安装mongodb
- 方向梯度直方图(HOG,Histogram of Gradient)学习笔记二 HOG正篇
- codevs1069 luogu1525 关押罪犯
- 对待棘手bug,新手与大牛的差距在哪里?