从C ++中的给定文件点读入目录

时间:2013-03-11 21:01:06

标签: c++ file directory

我有两个程序将同时读/写文件到同一目录(但不能同时读取同一个文件)。我已经完成了写作部分,但我正在努力获得阅读目录部分的一半体面和工作实现。

目录中的文件遵循以下命名方案: Image-[INDEX]-[KEY/DEL]--[TIMESTAMP]

[INDEX]000000递增,[KEY/DEL]根据图像是键还是增量帧来交替显示[TIMESTAMP]是文件中的Unix / Linux纪元时间创建。

现在,每次需要在目录中查找图像时,读取程序一次读取目录(使用dirent.h库)一个文件。当目录变得非常大时,我会想象这个操作/方法将很快变得非常耗费资源,并最终失败。所以,我试图找到一种替代方法。我正在考虑在初始化时读取整个目录,并将文件信息保存在一个数组中,以便稍后在程序中访问/使用。然后,当请求不在数组中的文件时,程序将通过读取目录来更新文件数组,但这次是从初始化结束时停止的点开始。

这可能吗?要在目录中的已知点(最后一个文件“read in”)的目录中读取文件名吗?或者我每次都必须从头开始?

或者有更好的方法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

正如安德鲁所说,在尝试解决之前,我会确认这实际上是一个问题。

如果你可以忽略文件不按顺序创建的可能性,那就是没有文件  您希望在该文件之后创建另一个文件之前进行处理,然后您可以使用此方法。

首先,将整个目录列表读入数组或vector。然后,在迭代文件时,只需迭代向量。最后,如果您找不到文件或到达矢量的末尾,请刷新它以防万一创建更多。

毫无疑问,您希望将此逻辑封装到某种上下文对象中,该对象会记住上次读取的文件。您还可以通过对矢量进行排序来优化。