`
zhouzaibao
  • 浏览: 294125 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java开发FTP客户端列出指定目录下面所有文件

阅读更多

    利用commons2.0(http://commons.apache.org/net)开发的一个列出FTP目录下面的所有文件。列文件的主要是一个递归方法的调用,目前支持列出一种指定的文件类型或所有文件。在对中文的支持方面,注意设置FTPClient的ControlEncoding即可。具体代码如下。

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import org.apache.commons.net.PrintCommandListener;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.log4j.Logger;
/**
 * 列出FTP服务器上指定目录下面的所有文件
 * @author BenZhou mailto:zhouzb@qq.com
 * 原文地址:http://zhouzaibao.iteye.com/blog/362866 
 */
public class FTPListAllFiles {
	private static Logger logger = Logger.getLogger(FTPListAllFiles.class);
	public FTPClient ftp;
	public ArrayList<String> arFiles;
	
	/**
	 * 重载构造函数
	 * @param isPrintCommmand 是否打印与FTPServer的交互命令
	 */
	public FTPListAllFiles(boolean isPrintCommmand){
		ftp = new FTPClient();
		arFiles = new ArrayList<String>();
		if(isPrintCommmand){
			ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
		}
	}
	
	/**
	 * 登陆FTP服务器
	 * @param host FTPServer IP地址
	 * @param port FTPServer 端口
	 * @param username FTPServer 登陆用户名
	 * @param password FTPServer 登陆密码
	 * @return 是否登录成功
	 * @throws IOException
	 */
	public boolean login(String host,int port,String username,String password) throws IOException{
		this.ftp.connect(host,port);
		if(FTPReply.isPositiveCompletion(this.ftp.getReplyCode())){
			if(this.ftp.login(username, password)){
				this.ftp.setControlEncoding("GBK");
				return true;
			}
		}
		if(this.ftp.isConnected()){
			this.ftp.disconnect();
		}
		return false;
	}
	
	/**
	 * 关闭数据链接
	 * @throws IOException
	 */
	public void disConnection() throws IOException{
		if(this.ftp.isConnected()){
			this.ftp.disconnect();
		}
	}
	
	/**
	 * 递归遍历出目录下面所有文件
	 * @param pathName 需要遍历的目录,必须以"/"开始和结束
	 * @throws IOException
	 */
	public void List(String pathName) throws IOException{
		if(pathName.startsWith("/")&&pathName.endsWith("/")){
			String directory = pathName;
			//更换目录到当前目录
			this.ftp.changeWorkingDirectory(directory);
			FTPFile[] files = this.ftp.listFiles();
			for(FTPFile file:files){
				if(file.isFile()){
					arFiles.add(directory+file.getName());
				}else if(file.isDirectory()){
					List(directory+file.getName()+"/");
				}
			}
		}
	}
	
	/**
	 * 递归遍历目录下面指定的文件名
	 * @param pathName 需要遍历的目录,必须以"/"开始和结束
	 * @param ext 文件的扩展名
	 * @throws IOException 
	 */
	public void List(String pathName,String ext) throws IOException{
		if(pathName.startsWith("/")&&pathName.endsWith("/")){
			String directory = pathName;
			//更换目录到当前目录
			this.ftp.changeWorkingDirectory(directory);
			FTPFile[] files = this.ftp.listFiles();
			for(FTPFile file:files){
				if(file.isFile()){
					if(file.getName().endsWith(ext)){
						arFiles.add(directory+file.getName());
					}
				}else if(file.isDirectory()){
					List(directory+file.getName()+"/",ext);
				}
			}
		}
	}
	public static void main(String[] args) throws IOException {
		FTPListAllFiles f = new FTPListAllFiles(true);
		if(f.login("192.168.0.3", 21, "test", "test")){
			f.List("/","mp4");
		}
		f.disConnection();
		Iterator<String> it = f.arFiles.iterator();
		while(it.hasNext()){
			logger.info(it.next());
		}
		
	}
}
0
0
分享到:
评论

相关推荐

    基于Java的FTP客户端源代码

    Java FTP客户端源代码是用于通过Java编程语言与FTP(文件传输协议)服务器进行交互的程序。FTP是一种在互联网上常用的标准文件传输协议,允许用户上传、下载和管理远程服务器上的文件。Java提供了一系列的API,如`...

    java ftp客户端,服务端

    客户端通常需要执行的操作包括登录、改变工作目录、列出目录内容、上传和下载文件等。 FTP服务端则更复杂,需要处理来自多个客户端的并发请求。在Java中,可以使用`java.net.ServerSocket`来监听特定端口上的连接...

    ftp客户端11.rar_JAVA访问 FTP_ftp客户端_ftp客户端 java_java ftp客户端_java 上传下载

    6. 目录操作:`FTPClient.changeWorkingDirectory()`改变当前工作目录,`FTPClient.printWorkingDirectory()`获取当前目录,`FTPClient.listNames()`列出目录中的文件和子目录。 四、Java实现FTP客户端示例 在`...

    java_ftp2.zip_FTP客户端程序_ftp_ftp java_ftp客户端 java_java ftp客户端

    Java作为一种广泛使用的编程语言,提供了丰富的库来实现FTP客户端程序,使得开发者能够轻松地与FTP服务器进行交互,进行上传、下载和管理文件等操作。在这个名为"java_ftp2.zip"的压缩包中,我们可以推测包含了一个...

    ftp.zip_FTP客户端程序_ftp_ftp java_ftp客户端 java_java ftp客户端

    FTP客户端是用户与FTP服务器交互的工具,它通过FTP协议执行命令,如登录服务器、列出目录、上传文件、下载文件等。在Java中实现FTP客户端,主要涉及到Java的`java.net`和`java.io`包,以及可能的`javax.net.ssl`包,...

    JAVA 实现 FTP 客户端功能

    5. **目录操作**: 可以使用`FTPClient.changeWorkingDirectory()`进入指定目录,`FTPClient.printWorkingDirectory()`获取当前目录,`FTPClient.listNames()`列出目录下的文件和子目录。 6. **文件重命名和删除**: ...

    ftp.rar_FTP CLIENT_ftp java_ftp客户端_ftp客户端 java_客户端

    FTP客户端是允许用户连接到FTP服务器并执行各种操作,如上传、下载、列出目录内容、移动或删除文件的软件。在这个项目中,Java被用来创建这样一个客户端,这通常涉及以下关键知识点: 1. **Java FTP库**:Java标准...

    基于java的FTP客户端设计与实现

    Java作为一种多平台的、面向对象的编程语言,提供了丰富的库来支持FTP客户端的开发。本项目"基于Java的FTP客户端设计与实现"旨在利用Java语言构建一个能够连接到FTP服务器,实现登录、文件上传和下载等功能的客户端...

    ftp客户端源码 java实现

    FTP客户端的基本功能包括连接到FTP服务器、登录、上传文件、下载文件、列出目录内容、创建或删除远程目录等。下面我们将深入探讨这些关键知识点: 1. **建立连接**: 使用`java.net.Socket`类可以创建与FTP服务器...

    FTPClient用于java开发FTP客户端

    在Java中,FTPClient库提供了一个丰富的API,允许开发者执行各种FTP操作,如连接到FTP服务器、登录、上传文件、下载文件、改变目录、列出目录内容等。这个库不仅支持标准的FTP协议,还支持FTP over SSL/TLS(FTPS)...

    课程设计基于GUI的FTP客户端的实现JAVA(txt为微云链接)

    1.实现一个图形用户界面的FTP客户端。 2.功能: 2.1 配置使用IIS的FTP服务器; 2.2 客户端发出各种操作命令;至少实现conn(连接)、list(列示文件)、retr(下载)、store(上载)的功能。 2.3 接收服务器的...

    课程设计基于GUI的FTP客户端JAVA源码

    1.实现一个图形用户界面的FTP客户端。 2.功能: 2.1 配置使用IIS的FTP服务器; 2.2 客户端发出各种操作命令;至少实现conn(连接)、list(列示文件)、retr(下载)、store(上载)的功能。 2.3 接收服务器的...

    FTP.rar_FTP 服务端_ftp 客户 端与 服务端_ftp客户端 java_java ftp客户端

    FTP客户端和服务器之间的交互主要通过一系列标准的FTP命令,如USER(指定用户名)、PASS(提供密码)、CWD(改变工作目录)、LIST(列出目录内容)、STOR(上传文件)和RETR(下载文件)。在Java FTP客户端实现中,...

    java_ftp.rar_FTP客户端 java_ftp_ftp java_java ftp_java_ftp

    这个压缩包中的FTP客户端可能包含了创建连接、登录、列出目录、上传、下载、删除文件等基本操作的实现。 FTP服务端则负责接收客户端的请求,并执行相应的操作。在Java中,实现FTP服务器并不常见,因为这需要对FTP...

    JAVA实现FTP协议中的服务器和客户端\\

    列出目录,使用`FTPClient.listFiles()`。 5. **关闭连接**:完成操作后,记得调用`FTPClient.disconnect()`断开连接。 在开发过程中,注意处理异常和错误,确保程序的健壮性。此外,FTP协议涉及到的命令和响应有...

    一个很好的java编写的ftp客户端

    Java FTP 客户端是一种基于Java编程语言实现的文件传输协议(FTP)应用程序,它允许用户与FTP服务器进行交互,包括上传、下载、列出目录、重命名或删除远程文件等操作。在Java中,实现FTP功能主要依赖于`java.net`和...

    基于Java的FTP客户端程序的设计与实现

    - `listFiles(String path)`:列出指定路径下的所有文件和目录。 - `storeFile(String remotePath, InputStream is)`:从输入流中读取文件并将其存储到FTP服务器上的指定路径。 - `retrieveFile(String ...

    ftp.rar_ftp_ftp java_ftp 客户端 服务器端_java ftp_服务端下载

    下面将详细介绍FTP协议,Java FTP客户端和服务器端的开发,以及如何实现文件的上传和下载功能。 FTP协议是TCP/IP协议族的一部分,它定义了两个主机间如何交换文件的格式和控制命令。FTP基于客户-服务器架构,分为...

    Java实现的ftp图形化客户端,毕业设计作品.zip

    总的来说,这个Java FTP客户端的毕业设计作品涵盖了网络编程、GUI设计、文件操作等多个方面的知识,是Java学习者深入理解和实践网络应用开发的优秀案例。通过这样的项目,开发者不仅可以巩固编程基础,还能提升解决...

    jftp.rar_ftp_ftp客户端 java_j-ftp_java client_java ftp

    3. **目录操作**:客户端可以列出服务器目录的内容,创建新目录,删除现有目录,以及改变当前工作目录。 4. **文件重命名和移动**:FTP允许客户端在服务器上对文件进行重命名或移动到不同目录。 5. **被动模式**:...

Global site tag (gtag.js) - Google Analytics