5

我正在做 SDCARD 扫描仪,它扫描每个文件夹和图像文件。

我正在使用 C 代码并使用 opendir、readdir、fopen API 来枚举目录和打开的文件。我有不同的 DIR 变量。

问题是 fopen() 花费了太多时间(10000 个文件需要 300 秒),而导向器遍历需要大约 25 秒。

是否有任何 API 可以让我使用句柄、dir_ino 或类似工具加快文件打开操作,以便我可以使用目录句柄或类似工具打开文件。

到目前为止,我已经尝试过使用 dirent->dir_ino, DIR* 但没有运气。

我正在寻找比 fopen 花费更少时间的低级 api。

编辑 fts 和 ftw api 有用吗?它们似乎仅与遍历目录有关...任何其他黑客或方法?

4

1 回答 1

1

唯一的“低级”功能是open

int fd = open(dirent->d_name, O_RDONLY);

不过,fopen应该不会慢很多。

于 2013-01-29T09:01:18.877 回答