java 从ftp服务器下载文件_Java通过FTP服务器上传下载文件的方法

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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值