我有两个程序将同时读取/写入文件到同一目录(但不会同时读取/写入文件)。我已经完成了写作部分,但我正在努力获得阅读目录部分的一半体面且有效的实现。
目录中的文件遵循以下命名方案:Image-[INDEX]-[KEY/DEL]--[TIMESTAMP]
[INDEX]
递增自000000
, [KEY/DEL]
根据图像是关键帧还是增量帧进行交替,并且[TIMESTAMP]
是文件创建时的 Unix/Linux 纪元时间。
现在,读取程序读取目录(使用dirent.h
库)每次需要在目录中查找图像时一次一个文件。当目录变得非常大时,我可以想象这个操作/方法将很快变得非常资源密集,并最终失败。所以,我正在尝试寻找替代方法。我正在考虑在初始化时读取整个目录,并将文件信息保存在数组中以便稍后在程序中访问/使用。然后,当请求的文件不在数组中时,程序将通过读取目录来更新文件数组,但这次是从初始化结束时停止的点开始。
这可能吗?要在目录中的已知点(最后一个文件“读入”)开始读取目录中的文件名?还是我每次都必须从头开始?
或者有更好的方法吗?
Thanks.
正如安德鲁所说,在尝试解决它之前,我会先确认这确实是一个问题。
如果你可以排除乱序创建文件的可能性,即没有文件
如果您希望在该文件之后创建另一个文件之前进行处理,那么您可以使用此方法。
首先,将整个目录列表读入数组或vector
。然后,迭代文件时,只需迭代向量即可。最后,如果您找不到文件或到达矢量末尾,请刷新它,以防创建更多文件。
毫无疑问,您会希望将此逻辑封装到某种上下文对象中,该对象会记住上次读取的文件。您还可以通过对向量进行排序来优化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)