1

D2010 Pro,Win Vista 32 位:

我需要解析文件的目录及其子文件夹,并将文件信息(名称、类型、大小、修改日期...... Windows Explorer 列)读入内存。到目前为止,我已经考虑过为这个任务使用内存表(似乎是显而易见的选择),但由于开销,我仍然犹豫不决。对象的 TDictionary 也可能是一种选择,但我不确定。最重要的是速度和对列执行排序的能力——升序或降序。

非常感谢您的想法和建议。

谢谢-菲尔

4

1 回答 1

3

使用内存数据库是一种选择,但对于一个非常简单的问题来说,它似乎是一个非常重要的解决方案。另一个要考虑的选项是使用TList<TFileDetails>where TFileDetailsis arecord和各种文件详细信息。

至于排序,最有效的方法是为要排序的每一列维护一个索引。因此,索引是一个简单的整数数组,表示按特定列排序时记录的顺序。因此,索引数组[1, 2, 0]意味着第一项是索引 1,第二项是索引2,第三项是索引0。这样做意味着您只需要在需要时对每一列进行排序,而且只需要这样做一次。

也就是说,如果您有很多文件,您甚至只需要维护单独的索引数组。您可能会发现,只需在需要时进行按需排序,性能就可以接受。我确信这就是 Explorer 所做的。

我无法就哪个选项适合您的问题向您提供建议,因为我不知道您的性能限制。但总而言之,以下是增加复杂性的主要选项:

  1. 根据需要使用TList<TFileDetails>和重新排序列表。
  2. TList<TFileDetails>按需使用、构建和保留索引数组。
  3. 使用内存数据库。
于 2013-05-03T17:57:04.597 回答