利用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());
}
}
}
分享到:
相关推荐
Java FTP客户端源代码是用于通过Java编程语言与FTP(文件传输协议)服务器进行交互的程序。FTP是一种在互联网上常用的标准文件传输协议,允许用户上传、下载和管理远程服务器上的文件。Java提供了一系列的API,如`...
客户端通常需要执行的操作包括登录、改变工作目录、列出目录内容、上传和下载文件等。 FTP服务端则更复杂,需要处理来自多个客户端的并发请求。在Java中,可以使用`java.net.ServerSocket`来监听特定端口上的连接...
6. 目录操作:`FTPClient.changeWorkingDirectory()`改变当前工作目录,`FTPClient.printWorkingDirectory()`获取当前目录,`FTPClient.listNames()`列出目录中的文件和子目录。 四、Java实现FTP客户端示例 在`...
Java作为一种广泛使用的编程语言,提供了丰富的库来实现FTP客户端程序,使得开发者能够轻松地与FTP服务器进行交互,进行上传、下载和管理文件等操作。在这个名为"java_ftp2.zip"的压缩包中,我们可以推测包含了一个...
FTP客户端是用户与FTP服务器交互的工具,它通过FTP协议执行命令,如登录服务器、列出目录、上传文件、下载文件等。在Java中实现FTP客户端,主要涉及到Java的`java.net`和`java.io`包,以及可能的`javax.net.ssl`包,...
5. **目录操作**: 可以使用`FTPClient.changeWorkingDirectory()`进入指定目录,`FTPClient.printWorkingDirectory()`获取当前目录,`FTPClient.listNames()`列出目录下的文件和子目录。 6. **文件重命名和删除**: ...
FTP客户端是允许用户连接到FTP服务器并执行各种操作,如上传、下载、列出目录内容、移动或删除文件的软件。在这个项目中,Java被用来创建这样一个客户端,这通常涉及以下关键知识点: 1. **Java FTP库**:Java标准...
Java作为一种多平台的、面向对象的编程语言,提供了丰富的库来支持FTP客户端的开发。本项目"基于Java的FTP客户端设计与实现"旨在利用Java语言构建一个能够连接到FTP服务器,实现登录、文件上传和下载等功能的客户端...
FTP客户端的基本功能包括连接到FTP服务器、登录、上传文件、下载文件、列出目录内容、创建或删除远程目录等。下面我们将深入探讨这些关键知识点: 1. **建立连接**: 使用`java.net.Socket`类可以创建与FTP服务器...
在Java中,FTPClient库提供了一个丰富的API,允许开发者执行各种FTP操作,如连接到FTP服务器、登录、上传文件、下载文件、改变目录、列出目录内容等。这个库不仅支持标准的FTP协议,还支持FTP over SSL/TLS(FTPS)...
1.实现一个图形用户界面的FTP客户端。 2.功能: 2.1 配置使用IIS的FTP服务器; 2.2 客户端发出各种操作命令;至少实现conn(连接)、list(列示文件)、retr(下载)、store(上载)的功能。 2.3 接收服务器的...
1.实现一个图形用户界面的FTP客户端。 2.功能: 2.1 配置使用IIS的FTP服务器; 2.2 客户端发出各种操作命令;至少实现conn(连接)、list(列示文件)、retr(下载)、store(上载)的功能。 2.3 接收服务器的...
FTP客户端和服务器之间的交互主要通过一系列标准的FTP命令,如USER(指定用户名)、PASS(提供密码)、CWD(改变工作目录)、LIST(列出目录内容)、STOR(上传文件)和RETR(下载文件)。在Java FTP客户端实现中,...
这个压缩包中的FTP客户端可能包含了创建连接、登录、列出目录、上传、下载、删除文件等基本操作的实现。 FTP服务端则负责接收客户端的请求,并执行相应的操作。在Java中,实现FTP服务器并不常见,因为这需要对FTP...
列出目录,使用`FTPClient.listFiles()`。 5. **关闭连接**:完成操作后,记得调用`FTPClient.disconnect()`断开连接。 在开发过程中,注意处理异常和错误,确保程序的健壮性。此外,FTP协议涉及到的命令和响应有...
Java FTP 客户端是一种基于Java编程语言实现的文件传输协议(FTP)应用程序,它允许用户与FTP服务器进行交互,包括上传、下载、列出目录、重命名或删除远程文件等操作。在Java中,实现FTP功能主要依赖于`java.net`和...
- `listFiles(String path)`:列出指定路径下的所有文件和目录。 - `storeFile(String remotePath, InputStream is)`:从输入流中读取文件并将其存储到FTP服务器上的指定路径。 - `retrieveFile(String ...
下面将详细介绍FTP协议,Java FTP客户端和服务器端的开发,以及如何实现文件的上传和下载功能。 FTP协议是TCP/IP协议族的一部分,它定义了两个主机间如何交换文件的格式和控制命令。FTP基于客户-服务器架构,分为...
总的来说,这个Java FTP客户端的毕业设计作品涵盖了网络编程、GUI设计、文件操作等多个方面的知识,是Java学习者深入理解和实践网络应用开发的优秀案例。通过这样的项目,开发者不仅可以巩固编程基础,还能提升解决...
3. **目录操作**:客户端可以列出服务器目录的内容,创建新目录,删除现有目录,以及改变当前工作目录。 4. **文件重命名和移动**:FTP允许客户端在服务器上对文件进行重命名或移动到不同目录。 5. **被动模式**:...