Java FTP 下载文件和文件夹

来源:互联网 发布:java管理系统源代码 编辑:程序博客网 时间:2024/06/05 20:13

Java FTP 下载文件和文件夹

Java FTP   2013-12-13 22:58:45 发布
您的评价:
     
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
原创粉丝点击