使用 FTPClient 如何将目录名称添加到 ArrayList<String>()?

Using FTPClient How do you add the directory names to an ArrayList<String>()?

我想:

在 Netbeans 上的 Java 中:

创建一个程序,列出 ftp 站点上所有文件的名称。然后定期检查是否有任何更新并生成新列表。

我的思考过程是:

  1. return root 中的文件和目录通过 ftp 连接 FTPClient() ftp.listFiles(dir)(名称和上次修改日期)

  2. 如果文件添加到fileArray

    2.1 如果文件存在于 fileArray 比较日期 2.2如果扫描的文件日期比fileArray中的旧文件更新 2.22 else更新扫描日期到fileArray 2.11 否则添加

  3. 如果目录添加到 dirArray 3.11 如果 dirArray 中存在扫描的目录,比较最后修改日期 3.21 如果扫描的目录日期比 dirArray 中的旧目录日期更新,则替换为 arraylist 3.22 否则删除 3.12 否则将目录添加到arraylist

  4. 遍历 dirArray 获取名称并将其输入 dir 并将 +1 添加到计数器

  5. 运行 再次从第 1 步开始,直到计数器 > 目录数组列表长度;
  6. 从文件数组列表中删除任何早于扫描日期的文件 7.1 遍历fileArray 7.2 比较returned file Date 和 scanDate 7.21 如果扫描日期!= scanDate 删除文件。

  7. 列出 fileArray 中的文件

到目前为止,这是我的代码:

public class DanLister {

private Date scannedDate;
private String dir;
private ArrayList<String>  dirArray = new ArrayList<String>();
private ArrayList<String>  fileArray = new ArrayList<String>();



 public void listFTP(String FTPdirectoryName,String server, String un, String pw, String dir, Calendar start, Calendar end){

 try {
  /// Instantiate new FTP Client 
  FTPClient ftp = new FTPClient();

  /// Connect to FTP
  ftp.connect(server);
  ftp.login(un, pw);
  System.out.println("Connected to " + server + "!");
  System.out.println(ftp.getReplyString());




 FTPFile[] filelist = ftp.listFiles(dir);
System.out.println(Arrays.toString(filelist));


 ftp.logout();
  ftp.disconnect();
} catch (IOException ex) {
  Logger.getLogger(FTPListFiles.class.getName()).log(Level.SEVERE, 
null, ex);
 }


}

}

我的问题是这个 returns FTPFile[] 不会进入我的 dirArray 我不确定如何继续这部分?我不知道如何转换 FTPFile[] 或只是获取名称和日期并将其放入 dirArray?

已通过 FTPListParseEngine 解决

我创建了这个 class:

package com.tableview.ftpmonitor;

import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPFileEntryParser;
import org.apache.commons.net.ftp.FTPListParseEngine;

public class parseFileList {

private String encoding;


public FTPFile[] parseFileList(InputStream listStream) throws 
IOException {
FTPListParseEngine engine = new 
FTPListParseEngine((FTPFileEntryParser) this);
engine.readServerList(listStream, encoding);
return engine.getFiles();


 }
}

并使用此代码将文件详细信息放入 ArrayList:

public void listFTP(String FTPdirectoryName,String server, String un, String pw, String dir, Calendar start, Calendar end){

 try {
  /// Instantiate new FTP Client 
  FTPClient ftp = new FTPClient();
  FTPFile ftpFile = new FTPFile();
  parseFileList pfl = new parseFileList();
  /// Connect to FTP
  ftp.connect(server);
  ftp.login(un, pw);
  System.out.println("Connected to " + server + "!");
  System.out.println(ftp.getReplyString());




 FTPListParseEngine engine = ftp.initiateListParsing(dir);
 int files = engine.getFiles().length;
 System.out.println("This is number of files:" + files);

 if(engine.hasNext()){

    String ln = Arrays.toString(engine.getFiles());
    dirArray.add(ln);
    System.out.println(dirArray);


}