+ -
当前位置:首页 → 问答吧 → Delphi,如何快速统计文件夹下文件数量,包括子文件夹

Delphi,如何快速统计文件夹下文件数量,包括子文件夹

时间:2011-09-06

来源:互联网

我需要知道,一个文件夹(包括子文件夹)中的 *.jpg 以及 *.jpeg 文件的数量(扩展名不区分大小写)。
如不能区分扩展名,统计所有文件数量也可以。

另 这个方法是否可以统计文件夹及子文件夹的数量?

不用遍历文件夹的方法。那种循环递归速度太慢了。
因为我的文件至少有几万个。

万分感谢 麻烦给出详细代码。!!!

作者: pronet   发布时间: 2011-09-06

貌似只有遍历这个方法

作者: m617105   发布时间: 2011-09-06

没用过其他方法,递归遍历还行吧,关注。

作者: zhnglicho   发布时间: 2011-09-06

之前看到有人好像是用一个api函数将文件放到一个列表控件内。然后通过items.count获得数量,速度非常快。

我自己也想到,通过调用dos命令 dir *.jpg /s>>a.txt 后把通过dos命令管道方式建立a.txt文件打开读取最后两行内容。 可速度还是不能满意。

遍历的话 我试过,够慢的,导致我程序执行时 要等好一会才能显示界面。。

作者: pronet   发布时间: 2011-09-06

楼主可以使用Delphi中新增的 IOUtils 单元来完成文件遍历。
首先添加 IOUtils 单元和 Types 单元;
示例代码如下:
指定一个测试目录,楼主可以换成你自己指定的目录,
const
  aimDir = 'D:\MyPctures';

获取指定目录及其子目录下所有指定类型的文件
var
  dir: TDirectory; 
  files: TStringDynArray;//需要 Types 单元支持
  str: string;
begin
  files := dir.GetFiles(aimDir, '*.jpg', TSearchOption.soAllDirectories);
  mmoFiles.Clear;
  for str in files do
  mmoFiles.Lines.Add(str);
end;
该检索方式速度比传统的遍历要快,且支持通配符。

作者: Terony   发布时间: 2011-09-06

还有一点忘了说了,上面的实例中,mmoFiles是用来显示检索到的文件的一个TMemo组件,楼主自行添加就好了。

作者: Terony   发布时间: 2011-09-06

热门下载

更多