|
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;
import java.util.UUID;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class FTPUtil {
private static FTPClient ftpClient = null;
public static void main(String[] args) {
connectFTPServer("xxx","xxx","127.0.0.1",21);//连接服务器
downLoadFTPFile("/d:/FTP","服务器.txt","D://");
closeFTPServer();//关闭服务器
}
/***************************** 文件获取和发送 连接ftp服务器 ---上传文件/下载文件---关闭ftp连接************************************/
/**
* connectFTPServer 连接ftp服务器
* @param userName
* @param passWord
* @param ip
* @param port
* @return boolean
*/
public static boolean connectFTPServer(String userName, String passWord,String ip, int port) {
boolean flag = true;
// FTPClient ftpClient = null;
if (ftpClient == null) {
int reply;
try {
ftpClient = new FTPClient();
ftpClient.setControlEncoding("GBK"); // 文件名乱码,默认ISO8859-1,不支持中文
System.out.println(" Encoding :"+ftpClient.getControlEncoding());
// ftpClient.setDefaultPort(port);
ftpClient.connect(ip, port);
ftpClient.login(userName, passWord);
System.out.println(" Connected to :" + ip);
System.out.println(" Replay Message :"+ftpClient.getReplyString());
reply = ftpClient.getReplyCode();
System.out.println("Reply :"+reply);
ftpClient.setDataTimeout(1200);
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
System.out.println("FTP server refused connection.");
flag = false;
}
} catch (SocketException e) {
flag = false;
e.printStackTrace();
System.out.println("登录ftp服务器 " + ip + " 失败,连接超时!");
} catch (IOException e) {
flag = false;
e.printStackTrace();
System.out.println("登录ftp服务器 " + ip + " 失败,FTP服务器无法打开!");
}
}
if (flag == true) {
System.out.println("登陆ftp服务器" + ip + "成功");
}
return flag;
}
/**
* downLoadFTPFile 下载文件
* @param fileFTPPath 服务器路径
* @param fileFTPName 要下载文件名
* @param localPath 本地路径
* LExComIF.downLoadFTPFile("/ftp", "test.txt", "D://"); //下载
* @return boolean
*/
public static boolean downLoadFTPFile(String fileFTPPath, String fileFTPName, String localPath) {
FTPFile[] fs;
boolean flag = false;
// FTPClient ftpClient = null;
try {
ftpClient.changeWorkingDirectory(fileFTPPath);// 转移到FTP服务器目录
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(fileFTPName)) {
File localFile = new File(localPath + ff.getName());
//同名文件的处理
System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"+localFile);
String[] temp = fileFTPName.split("\\.");
File fileB = new File("D://"+temp[0]+"("+UUID.randomUUID().toString().replace("-","")+")."+temp[1]);
System.out.println("文件重命名为"+fileB);
if (localFile.exists()) {
localFile.renameTo(fileB);// 把已存在的文件重新命名
}
FileOutputStream is = new FileOutputStream(localFile);
ftpClient.retrieveFile(ff.getName(), is);
is.close();
System.out.println(fileFTPName+"下载成功");
flag = true;
}
}
} catch (IOException e) {
e.printStackTrace();
System.out.println(fileFTPName+"下载失败");
flag = false;
}
if (flag == true) {
System.out.println("下载成功");
}else{
System.out.println("下载文件不存在");
}
return flag;
}
/**
* upLoadFileToFTP 上传文件
* @param fileFTPPath 服务器路径
* @param localFileName 上传文件名
* @param localAllFilePath 本地完整路径
* LExComIF.upLoadFileToFTP("/ftp", "刘立.csv", "D:\\刘立.csv"); //上传
* @return boolean
*/
public static boolean upLoadFileToFTP(String fileFTPPath, String localFileName, String localAllFilePath) {
boolean flag = false;
// FTPClient ftpClient = null;
//同名文件的处理
try {
FileInputStream in = new FileInputStream(new File(localAllFilePath));
ftpClient.changeWorkingDirectory(fileFTPPath);
ftpClient.storeUniqueFile(localFileName, in);//同名文件的处理 名字后面数字递增。 eg: liuli1 、liuli2 、liuli3......
//ftpClient.storeFile(localFileName, in); //把原来的文件删除(覆盖)
in.close();
System.out.println(localFileName+"上传成功");
flag = true;
} catch (Exception e) {
e.printStackTrace();
System.out.println(localFileName+"上传失败");
flag = false;
}
return flag;
}
/**
* connectFTPServer 断开ftp服务器
* @return boolean
*/
public static boolean closeFTPServer() {
boolean flag = false;
// FTPClient ftpClient = null;
try {
if (ftpClient != null) {
ftpClient.logout();
ftpClient.disconnect();
flag =true ;
System.out.println("断开ftp服务器成功");
}
} catch (Exception e) {
e.printStackTrace();
flag = false;
System.out.println("断开ftp服务器失败");
}
return flag;
}
} |
|
|