packagecom.favccxx.favsoft.util;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importorg.apache.commons.net.ftp.FTPClient;importorg.apache.commons.net.ftp.FTPFile;importorg.apache.commons.net.ftp.FTPReply;public classFavFTPUtil {/*** 上传文件(可供Action/Controller层使用)
*@paramhostname FTP服务器地址
*@paramport FTP服务器端口号
*@paramusername FTP登录帐号
*@parampassword FTP登录密码
*@parampathname FTP服务器保存目录
*@paramfileName 上传到FTP服务器后的文件名称
*@paraminputStream 输入文件流
*@return
*/
public static boolean uploadFile(String hostname, intport, String username, String password, String pathname, String fileName, InputStream inputStream){boolean flag = false;
FTPClient ftpClient= newFTPClient();
ftpClient.setControlEncoding("UTF-8");try{//连接FTP服务器
ftpClient.connect(hostname, port);//登录FTP服务器
ftpClient.login(username, password);//是否成功登录FTP服务器
int replyCode =ftpClient.getReplyCode();if(!FTPReply.isPositiveCompletion(replyCode)){returnflag;
}
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.makeDirectory(pathname);
ftpClient.changeWorkingDirectory(pathname);
ftpClient.storeFile(fileName, inputStream);
inputStream.close();
ftpClient.logout();
flag= true;
}catch(Exception e) {
e.printStackTrace();
}finally{if(ftpClient.isConnected()){try{
ftpClient.disconnect();
}catch(IOException e) {
e.printStackTrace();
}
}
}returnflag;
}/*** 上传文件(可对文件进行重命名)
*@paramhostname FTP服务器地址
*@paramport FTP服务器端口号
*@paramusername FTP登录帐号
*@parampassword FTP登录密码
*@parampathname FTP服务器保存目录
*@paramfilename 上传到FTP服务器后的文件名称
*@paramoriginfilename 待上传文件的名称(绝对地址)
*@return
*/
public static boolean uploadFileFromProduction(String hostname, intport, String username, String password, String pathname, String filename, String originfilename){boolean flag = false;try{
InputStream inputStream= new FileInputStream(newFile(originfilename));
flag=uploadFile(hostname, port, username, password, pathname, filename, inputStream);
}catch(Exception e) {
e.printStackTrace();
}returnflag;
}/*** 上传文件(不可以进行文件的重命名操作)
*@paramhostname FTP服务器地址
*@paramport FTP服务器端口号
*@paramusername FTP登录帐号
*@parampassword FTP登录密码
*@parampathname FTP服务器保存目录
*@paramoriginfilename 待上传文件的名称(绝对地址)
*@return
*/
public static boolean uploadFileFromProduction(String hostname, intport, String username, String password, String pathname, String originfilename){boolean flag = false;try{
String fileName= newFile(originfilename).getName();
InputStream inputStream= new FileInputStream(newFile(originfilename));
flag=uploadFile(hostname, port, username, password, pathname, fileName, inputStream);
}catch(Exception e) {
e.printStackTrace();
}returnflag;
}/*** 删除文件
*@paramhostname FTP服务器地址
*@paramport FTP服务器端口号
*@paramusername FTP登录帐号
*@parampassword FTP登录密码
*@parampathname FTP服务器保存目录
*@paramfilename 要删除的文件名称
*@return
*/
public static boolean deleteFile(String hostname, intport, String username, String password, String pathname, String filename){boolean flag = false;
FTPClient ftpClient= newFTPClient();try{//连接FTP服务器
ftpClient.connect(hostname, port);//登录FTP服务器
ftpClient.login(username, password);//验证FTP服务器是否登录成功
int replyCode =ftpClient.getReplyCode();if(!FTPReply.isPositiveCompletion(replyCode)){returnflag;
}//切换FTP目录
ftpClient.changeWorkingDirectory(pathname);
ftpClient.dele(filename);
ftpClient.logout();
flag= true;
}catch(Exception e) {
e.printStackTrace();
}finally{if(ftpClient.isConnected()){try{
ftpClient.logout();
}catch(IOException e) {
}
}
}returnflag;
}/*** 下载文件
*@paramhostname FTP服务器地址
*@paramport FTP服务器端口号
*@paramusername FTP登录帐号
*@parampassword FTP登录密码
*@parampathname FTP服务器文件目录
*@paramfilename 文件名称
*@paramlocalpath 下载后的文件路径
*@return
*/
public static boolean downloadFile(String hostname, intport, String username, String password, String pathname, String filename, String localpath){boolean flag = false;
FTPClient ftpClient= newFTPClient();try{//连接FTP服务器
ftpClient.connect(hostname, port);//登录FTP服务器
ftpClient.login(username, password);//验证FTP服务器是否登录成功
int replyCode =ftpClient.getReplyCode();if(!FTPReply.isPositiveCompletion(replyCode)){returnflag;
}//切换FTP目录
ftpClient.changeWorkingDirectory(pathname);
FTPFile[] ftpFiles=ftpClient.listFiles();for(FTPFile file : ftpFiles){if(filename.equalsIgnoreCase(file.getName())){
File localFile= new File(localpath + "/" +file.getName());
OutputStream os= newFileOutputStream(localFile);
ftpClient.retrieveFile(file.getName(), os);
os.close();
}
}
ftpClient.logout();
flag= true;
}catch(Exception e) {
e.printStackTrace();
}finally{if(ftpClient.isConnected()){try{
ftpClient.logout();
}catch(IOException e) {
}
}
}returnflag;
}
}