Java FTP 下载文件和文件夹
来源:互联网 发布:java管理系统源代码 编辑:程序博客网 时间:2024/06/05 20:13
Java FTP 下载文件和文件夹
您的评价: 0.0
收藏 0收藏
用apache下的common-net.jar包开发Java FTP下载功能
导入apache-net-2.0.jar到工程中以及其他jar
import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.net.SocketException;import org.apache.commons.net.ftp.FTP;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPReply;import org.apache.log4j.Logger;/** * 采用的是apache commons-net架包中的ftp工具类实现的 * * @author chiyong * */public class FtpCollectionUtil {private String username;private String password;private String ftpHostName;private int port = 21;private FTPClient ftpClient = new FTPClient();private FileOutputStream fos = null;private Logger logger = Logger.getLogger(FtpCollectionUtil.class);public FtpCollectionUtil(String username, String password,String ftpHostName, int port) {super();this.username = username;this.password = password;this.ftpHostName = ftpHostName;this.port = port;}/*** 建立连接b*/private void connect() {try {logger.debug("开始连接");// 连接ftpClient.connect(ftpHostName, port);int reply = ftpClient.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {ftpClient.disconnect();}// 登录ftpClient.login(username, password);ftpClient.setBufferSize(256);ftpClient.setFileType(FTP.BINARY_FILE_TYPE);ftpClient.setControlEncoding("utf8");logger.debug("登录成功!");logger.debug("开始登录!");} catch (SocketException e) {logger.error("", e);} catch (IOException e) {logger.error("", e);}}/*** 关闭输入输出流* * @param fos*/private void close(FileOutputStream fos) {try {if (fos != null) {fos.close();}ftpClient.logout();logger.info("退出登录");ftpClient.disconnect();logger.info("关闭连接");} catch (IOException e) {logger.error("", e);}}/*** 下载文件* * @param ftpFileName* @param localDir*/public void down(String ftpFileName, String localDir) {connect();downFileOrDir(ftpFileName, localDir);close(fos);}private void downFileOrDir(String ftpFileName, String localDir) {try {File file = new File(ftpFileName);File temp = new File(localDir);if (!temp.exists()) {temp.mkdirs();}// 判断是否是目录if (isDir(ftpFileName)) {String[] names = ftpClient.listNames();for (int i = 0; i < names.length; i++) {System.out.println(names[i] + "^^^^^^^^^^^^^^");if (isDir(names[i])) {downFileOrDir(ftpFileName + '/' + names[i], localDir+ File.separator + names[i]);ftpClient.changeToParentDirectory();} else {File localfile = new File(localDir + File.separator+ names[i]);if (!localfile.exists()) {fos = new FileOutputStream(localfile);ftpClient.retrieveFile(names[i], fos);} else {logger.debug("开始删除文件");file.delete();logger.debug("文件已经删除");fos = new FileOutputStream(localfile);ftpClient.retrieveFile(ftpFileName, fos);}}}} else {File localfile = new File(localDir + File.separator+ file.getName());if (!localfile.exists()) {fos = new FileOutputStream(localfile);ftpClient.retrieveFile(ftpFileName, fos);} else {logger.debug("开始删除文件");file.delete();logger.debug("文件已经删除");fos = new FileOutputStream(localfile);ftpClient.retrieveFile(ftpFileName, fos);}ftpClient.changeToParentDirectory();}logger.info("下载成功!");} catch (SocketException e) {logger.error("连接失败!", e);} catch (IOException e) {logger.error("下载失败!", e);}}// 判断是否是目录public boolean isDir(String fileName) {try {// 切换目录,若当前是目录则返回true,否则返回true。boolean falg = ftpClient.changeWorkingDirectory(fileName);return falg;} catch (Exception e) {e.printStackTrace();logger.error("", e);}return false;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getFtpHostName() {return ftpHostName;}public void setFtpHostName(String ftpHostName) {this.ftpHostName = ftpHostName;}public int getPort() {return port;}public void setPort(int port) {this.port = port;}public class TestFileUtil {public static void main(String[] args) {/*** apache common-net实现的*/FtpCollectionUtil ftpUtil = new FtpCollectionUtil("webfocus1","webfocus1", "192.168.0.2", 21);// /home/webfocus1/apache-tomcat-6.0.37/webapps/NEZA_ROOT/要下载的文件夹。ftpUtil.down("/home/webfocus1/apache-tomcat-6.0.37/webapps/NEZA_ROOT/","D://a");}}}
0 0
- Java FTP 下载文件和文件夹
- java Ftp文件上传和下载
- Java连接FTP上传和下载文件
- JAVA FTP 下载文件
- java ftp 文件下载
- Java创建文件夹和JSP下载文件
- C# FTP 文件 文件夹操作 上传 下载
- C# FTP 文件 文件夹操作 上传 下载
- python 递归下载ftp文件夹及文件
- ftp Client递归下载ftp上某个文件夹的文件
- java实现ftp下载文件
- java读取ftp文件下载
- java中FTP下载文件
- java关于ftp文件下载
- java中FTP下载文件
- java FTP 工具类 同步文件夹 下载文件..等操作(FtpHelper 需要commons-net-3.5.jar)
- FTP上传和下载文件
- ftp 文件获取和下载
- Qt连接mysql数据库,及出现的问题
- C#设计模式学习笔记-单例模式
- RXJava
- Linux内核驱动之热插拔事件
- 图片切换(小数量)
- Java FTP 下载文件和文件夹
- Android里回调(callback)的简单用法
- switch case语句里面不能定义对象,解决方法
- liblinear实践初步
- CSS浮动(float,clear)通俗讲解
- 训练神经网络的五大算法
- 安卓 Service和绑定服务
- Gneymotion无法启动和Oracle VM VirtualBox常见问题
- Callable 和 FutureTask