1

我计划构建一个应用程序,该应用程序将以深度优先搜索的方式抓取本地文件系统(子树)的一部分,并处理它找到的所有文件,除了一些可配置的异常。


举个例子,假设我有一个这样的目录结构:

> documents
  - generic-doc.txt
  > mails
    - mail-01.txt
    - mail-02.txt
    - mail-03.txt
    > unread
      - mail-04.txt
  > invoices
    > paid
      - invoice-01.pdf
      - invoice-02.pdf
    > unpaid
      - invoice-03.pdf

我也有这样的排除规则:

exclude = "documents/mails/unread | documents/invoices"

鉴于这些输入数据,我的应用程序将处理以下文档:

  • 通用文档.txt
  • mail-01.txt
  • mail-02.txt
  • mail-03.txt

(例如,它将处理所有文件,除了位于文档/邮件/未读和文档/发票文件夹中的文件)

将来,我可能需要实施各种形式的排除规则。


测试爬取模块实现的最佳方法是什么(例如,当给定排除规则时,模块将返回正确的文档集)?可以在不使用真实文件系统的情况下完成吗?

4

2 回答 2

1

将排除规则提取到单独的模块/类/对象并单独测试。然后确保您的爬虫在处理文件之前询问 ExclusionRule。

草图

public interface FileExcluder {
   boolean isExcluded(File aFile);
}

请注意,已经有提供类似服务的FileFilter,也许您可​​以重用该抽象。

于 2012-12-13T12:01:12.787 回答
1

如果您使用的是 Java 7,您可以创建一个虚拟文件系统。(假设您正在使用它)

您可以创建一个可以模拟所有文件处理操作的接口,但创建测试文件和测试这些文件(完成后删除它们)可能要简单得多

于 2012-12-13T12:03:30.050 回答