`
sqzhangling
  • 浏览: 19056 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

利用FTPClient获取ftp服务器上面的文件夹及文件夹里面的文件名称

 
阅读更多
读取ftp服务器上面的文件夹以及子文件名称,只需要获取名称,并不从ftp上面下载
package com.pd.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.SocketException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

/**
* @describe 读取FTP上的文件
* @auto zhangling
* @date 2013-11-18 下午4:07:34
*/
public class FtpUtils {

private FTPClient ftpClient;
private String strencoding;
private String ip = "192.168.1.249";        // 服务器IP地址
private String userName = "anonymous";        // 用户名
private String userPwd = "";        // 密码
private int port = 21;      // 端口号
private String path = "Alam/192.168.1.229/";        // 读取文件的存放目录

/**
  * init ftp servere
  */
public FtpUtils() {
  this.reSet();
}

public void reSet() {
  // 以当前系统时间拼接文件名
  strencoding = "GBK";
  this.connectServer(ip, port, userName, userPwd, path);
}

/**
  * @param ip
  * @param port
  * @param userName
  * @param userPwd
  * @param path
  * @throws SocketException
  * @throws IOException function:连接到服务器
  */
public void connectServer(String ip, int port, String userName, String userPwd, String path) {
  ftpClient = new FTPClient();
  try {
   // 连接
   ftpClient.connect(ip, port);
   // 登录
   ftpClient.login(userName, userPwd);
   if (path != null && path.length() > 0) {
    // 跳转到指定目录
    ftpClient.changeWorkingDirectory(path);
   }
  } catch (SocketException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
}

/**
  * @throws IOException function:关闭连接
  */
public void closeServer() {
  if (ftpClient.isConnected()) {
   try {
    ftpClient.logout();
    ftpClient.disconnect();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
}

/**
  * @param path
  * @return function:读取指定目录下的文件名
  * @throws IOException
  */
public List<String> getFileList(String path) throws ParseException {
  List<String> fileLists = new ArrayList<String>();
  // 获得指定目录下所有文件名
  FTPFile[] ftpFiles = null;
  try {
   ftpFiles = ftpClient.listFiles(path);
  } catch (IOException e) {
   e.printStackTrace();
  }
  for (int i = 0; ftpFiles != null && i < ftpFiles.length; i++) {
   FTPFile file = ftpFiles[i];
   if (file.isFile()) {
System.out.println("文件夹下面的文件====="+file.getName());
    fileLists.add(file.getName());
   }else if(file.isDirectory()){
   System.out.println("文件夹名称为====="+file.getName());
   List<String> childLists = getFileList(path + file.getName()+"/");
   for(String childFileName : childLists){
   fileLists.add(childFileName);
   String fileType = childFileName.substring(childFileName.lastIndexOf(".")+1,childFileName.length());
  System.out.println("文件类型为:"+fileType);
  FtpUtils ftp = new FtpUtils();
  if(fileType.equals("txt")){
  System.out.println("文件名为:"+childFileName);
  String content = "";
  content = ftp.readFile(path + file.getName()+"/"+childFileName);
System.out.println("文件内容为:"+content);
  }
   }
   }
  }
  return fileLists;
}

/**
  * @param fileName
  * @return function:从服务器上读取指定的文件
  * @throws ParseException
  * @throws IOException
  */
public String readFile(String fileName) throws ParseException {
  InputStream ins = null;
  StringBuilder builder = null;
  try {
   // 从服务器上读取指定的文件
   ins = ftpClient.retrieveFileStream(fileName);
   BufferedReader reader = new BufferedReader(new InputStreamReader(ins, strencoding));
   String line;
   builder = new StringBuilder(150);
   while ((line = reader.readLine()) != null) {
    System.out.println(line);
    builder.append(line);
   }
   reader.close();
   if (ins != null) {
    ins.close();
   }
   // 主动调用一次getReply()把接下来的226消费掉. 这样做是可以解决这个返回null问题
   ftpClient.getReply();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return builder.toString();
}

/**
  * @param fileName function:删除文件
  */
public void deleteFile(String fileName) {
  try {
   ftpClient.deleteFile(fileName);
  } catch (IOException e) {
   e.printStackTrace();
  }
}

/**
  * @param args   
  * @throws ParseException
  */
public static void main(String[] args) throws ParseException {
  FtpUtils ftp = new FtpUtils();
  List<String> str = ftp.getFileList("");
  System.out.println("目录下包含的文件名称为:"+str);
  for(String a : str){
  System.out.println("文件名为:"+a);
  }
  ftp.closeServer();
}
}



分享到:
评论

相关推荐

    获取ftp服务器文件的大小

    ### 获取FTP服务器文件大小的知识点解析 在进行网络文件传输时,经常需要了解远程文件的大小,以便于更好地控制文件的下载进度或者进行其他相关的管理操作。本文将围绕“获取FTP服务器文件的大小”这一主题展开,...

    上传本地文件夹的文件到FTP服务器指定目录

    本项目聚焦于如何将本地文件夹中的文件上传到FTP服务器的特定目录,这在网站更新、数据迁移或备份场景中尤其有用。我们将探讨相关的知识点,并提供一些基础的实现方法。 1. FTP基本概念:FTP是一种基于TCP的应用层...

    JAVA获取FTP文件列表

    本文档将详细介绍一个基于Java的实用工具类`FtpClientUtil`,该类提供了一系列功能来与FTP服务器交互,包括连接到服务器、上传文件、下载文件、获取文件列表、删除文件和目录以及关闭连接等操作。 #### 二、`...

    C#FTP操作:上传、下载、在服务器上创建文件夹、删除服务器上的文件

    - 使用Stream的CopyTo方法将本地文件内容写入FTP服务器。 3. **下载文件**: - 设置FtpWebRequest对象的Request.Method为"RETR",表示下载。 - 发起请求并获取FtpWebResponse对象。 - 通过FtpWebResponse的...

    linux ftp服务器上传文件夹时提示550错误问题解决方法.doc

    Linux FTP 服务器上传文件夹时提示 550 错误问题解决方法 Linux FTP 服务器上传文件夹时提示 550 错误问题解决方法是指在 Linux 操作系统中,使用 FTP 服务器上传文件夹时,遇到 550 错误的问题解决方法。该问题是...

    java定时从ftp服务器更新相关文件

    要实现定时从FTP服务器下载文件,可以利用Java的定时框架,如`java.util.Timer`或`java.concurrent.ScheduledExecutorService`。设置定时任务,周期性检查FTP服务器是否有新文件。 下面是一个使用`ftp4j`实现的...

    FTP中获取文件大小

    总结来说,Java的FTPClient类为我们提供了一种强大且方便的方式来与FTP服务器交互,包括获取文件大小、文件夹属性,以及执行各种FTP命令。了解并熟练运用这些功能,可以极大地提高我们在开发过程中处理文件传输的...

    java FTP服务器文件上传下载,创建多级文件夹.zip

    可以使用`FTPClient`的`listNames()`或`listFiles()`方法获取FTP服务器上的文件和目录列表,然后根据需要进行查找。 在提供的压缩包"java FTP服务器文件上传下载,创建多级文件夹.zip"中,包含了一个可以直接运行的...

    java实现本地按照FTP服务器上目录结构创建文件夹下载文件

    以上就是使用Java和Apache Commons Net库实现从FTP服务器下载文件并按照服务器目录结构创建本地文件夹的基本步骤。在实际应用中,还需要考虑异常处理、错误重试、文件传输进度显示等高级特性。在代码示例中,`...

    jgrid表格展现ftp服务器文件结构

    于是就做了一个示例,使用Apache ftpClient连接ftp服务器,获取内容文件信息(文件ftp地址,文件名,文件大小,文件创建时间),将取到的ftp服务器上的所有内容信息通过jgrid以表格的形式展现出来,类似于windows文件...

    .net ftp上传文件文件夹

    在FTP服务器上设置当前工作目录,通常是您希望上传文件的目标目录: ```csharp client.Cwd("/public_html"); ``` 4. **遍历本地文件夹并上传** 使用递归函数遍历本地文件夹,逐个上传文件和子文件夹。这里我们...

    java实现Ftp批量下载文件及解压

    如果需要从FTP服务器的特定目录下载文件,可以使用`changeWorkingDirectory()`方法。 ```java ftp.changeWorkingDirectory("/path/to/directory"); ``` 4. **列出目录中的文件**: 使用`listNames()`或`list...

    java项目实现远程UbuntuFTP下载文件和文件夹

    在Java编程环境中,实现远程Ubuntu FTP(文件传输协议)下载文件和文件夹是一项常见的任务,尤其是在构建跨平台的系统集成或者自动化运维方案时。FTP允许客户端与服务器之间进行高效的数据交换,而Java提供了多种库...

    Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法

    在这个场景中,我们关注的是如何使用Java来实现FTP的相关操作,包括上传文件、下载文件、删除文件以及在FTP服务器上创建或上传文件夹。 首先,为了实现这些功能,我们需要一个FTP客户端类,如`ftpUtil`。这个类包含...

    Delphi客户端通过FTP服务器上传或下载文件或图片方法

    ### Delphi客户端通过FTP服务器上传或下载文件或图片方法 #### 概述 本文档将详细介绍如何使用Delphi客户端通过FTP服务器实现文件或图片的上传和下载操作。Delphi是一种非常强大的开发工具,广泛应用于Windows应用...

    C#实现FTP操作和Zip压缩操作

    本地文件的压缩和解压缩,本地文件单个和批量上传到服务器,并且可以选择上传到FTP服务器的目的目录,FTP服务器文件分级浏览,ftp服务器上文件单个和批量下载到本地指定目录,FTP服务器上新建文件夹,文件重命名,...

    Delphi 连接FTP读取文件数据

    下面是一个简单的示例代码片段,演示了如何使用Delphi和Indy的TIdFTP组件来读取FTP服务器上的文本文件: ```delphi uses IdFTP; var FTPClient: TIdFTP; FileData: string; begin FTPClient := TIdFTP.Create...

    C#Ftp文件目录展示,文件下载

    在FTP应用中,WPF可以用来创建用户界面,展示FTP服务器的目录结构,以及提供文件下载按钮等交互元素。 5. C# FTP操作:在C#中,通过创建`FtpWebRequest`或`FtpClient`对象,我们可以实现FTP命令,如`LIST`来获取...

    FF.zip 基于qt的ftp客户端显示服务器文件、上传、下载

    3. **FtpClient类**:在Qt中,QNetworkAccessManager和QNetworkReply类用于处理网络请求,而针对FTP,我们可以自定义一个FtpClient类,封装FTP相关的操作,如连接、登录、获取目录列表、下载文件、上传文件等。...

Global site tag (gtag.js) - Google Analytics