计算目录中具有给定扩展名的文件数 - C ++?

时间:2009-12-20 08:43:37

标签: c++ file-io directory file-extension

在c ++中是否可以计算目录中具有给定扩展名的文件数?

我正在编写一个程序,可以做这样的事情(伪代码):

if (file_extension == ".foo")
    num_files++;
for (int i = 0; i < num_files; i++)
    // do something

显然,这个程序要复杂得多,但这应该可以让你对我正在尝试做的事情有所了解。

如果无法做到这一点,请告诉我。

谢谢!

3 个答案:

答案 0 :(得分:6)

这种功能是特定于操作系统的,因此没有标准的,可移植的方法。

但是,使用Boost's Filesystem library,您可以以便携方式执行此操作,以及更多与文件系统相关的操作。

答案 1 :(得分:5)

C或C ++ 标准本身没有任何关于目录处理的内容,但是任何有价值的操作系统都会有这样的野兽,例如findfirst/findnext函数或{{ 1}}。

你要做的就是对这些函数进行简单的循环,检查为你想要的扩展返回的字符串的结尾。

类似的东西:

readdir

如上所述,您将用于遍历目录的实际功能是特定于操作系统的。

对于UNIX,几乎可以肯定是使用opendirreaddirclosedir。这段代码是一个很好的起点:

char *fspec = findfirst("/tmp");
while (fspec != NULL) {
    int len = strlen (fspec);
    if (len >= 4) {
        if (strcmp (".foo", fspec + len - 4) == 0) {
            printf ("%s\n", fspec);
        }
    }
    fspec = findnext();
}

答案 2 :(得分:1)

首先,你在为什么操作系统写作?

  • 如果是Windows,则在MSDN中查找FindFirstFileFindNextFile
  • 如果您正在查看POSIX系统的代码,请阅读manopendirreaddir的{​​{1}}。
  • 对于跨平台,我建议使用Boost.Filesystem库。