【发布时间】:2012-11-04 16:32:50
【问题描述】:
如何访问系统目录中的文件,知道主目录,它的扩展名。但不知道文件名和中间的节点(=子目录)?
【问题讨论】:
-
这似乎是一个奇怪的要求,你想达到什么目的?
-
boost::filesystem是一个选项吗?
如何访问系统目录中的文件,知道主目录,它的扩展名。但不知道文件名和中间的节点(=子目录)?
【问题讨论】:
boost::filesystem 是一个选项吗?
如何查找目录的内容,从而找出该文件的名称,因操作系统而异。在 Linux 上,您将使用 diropen,在 Windows 上使用其他东西。但是,boost::filesystem 库允许您以独立于平台的方式执行此操作。
如果我没听错,您正在寻找文件“/System/foo/bar/baz.dat”,但您不知道“foo”、“bar”或“baz”是什么.在这种情况下,您将需要遍历“/System”下每个目录中的每个文件,直到找到具有所需扩展名的文件。
有关此类迭代的示例,请参阅this question 的最佳答案。
【讨论】:
您可以从系统目录开始搜索具有该扩展名的所有文件。根据“系统目录”,我猜这是在 Windows 上,在这种情况下,您通常用于该搜索的函数将是 FindFirstFile、FindNextFile 和 FindClose。您也可以使用SetCurrentDirectory 遍历您的起点下的子目录。
根据您所说的(到目前为止),如果您找到多个具有该扩展名的文件,很难猜测您可能想要做什么。
【讨论】: