D2010 Pro,Win Vista 32 位:
我需要解析文件的目录及其子文件夹,并将文件信息(名称、类型、大小、修改日期...... Windows Explorer 列)读入内存。到目前为止,我已经考虑过为这个任务使用内存表(似乎是显而易见的选择),但由于开销,我仍然犹豫不决。对象的 TDictionary 也可能是一种选择,但我不确定。最重要的是速度和对列执行排序的能力——升序或降序。
非常感谢您的想法和建议。
谢谢-菲尔
D2010 Pro,Win Vista 32 位:
我需要解析文件的目录及其子文件夹,并将文件信息(名称、类型、大小、修改日期...... Windows Explorer 列)读入内存。到目前为止,我已经考虑过为这个任务使用内存表(似乎是显而易见的选择),但由于开销,我仍然犹豫不决。对象的 TDictionary 也可能是一种选择,但我不确定。最重要的是速度和对列执行排序的能力——升序或降序。
非常感谢您的想法和建议。
谢谢-菲尔
使用内存数据库是一种选择,但对于一个非常简单的问题来说,它似乎是一个非常重要的解决方案。另一个要考虑的选项是使用TList<TFileDetails>
where TFileDetails
is arecord
和各种文件详细信息。
至于排序,最有效的方法是为要排序的每一列维护一个索引。因此,索引是一个简单的整数数组,表示按特定列排序时记录的顺序。因此,索引数组[1, 2, 0]
意味着第一项是索引 1,第二项是索引2
,第三项是索引0
。这样做意味着您只需要在需要时对每一列进行排序,而且只需要这样做一次。
也就是说,如果您有很多文件,您甚至只需要维护单独的索引数组。您可能会发现,只需在需要时进行按需排序,性能就可以接受。我确信这就是 Explorer 所做的。
我无法就哪个选项适合您的问题向您提供建议,因为我不知道您的性能限制。但总而言之,以下是增加复杂性的主要选项:
TList<TFileDetails>
和重新排序列表。TList<TFileDetails>
按需使用、构建和保留索引数组。