在linux/c中快速打开数千个文件

JRC*_*JRC 5 c file-io android

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

我正在使用C代码并使用opendir,readdir,fopen API来枚举目录和文件打开.我有直接的,DIR变量.

问题是fopen()占用太多时间(10000个文件为300秒),而导演遍历需要大约25秒.

是否有任何API允许我加速文件打开操作,使用handle,dir_ino或类似的,以便我可以使用目录句柄或类似打开文件.

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

我正在寻找低级api,它花费的时间少于fopen.

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

Ola*_*che 1

唯一的“低级”功能是open

int fd = open(dirent->d_name, O_RDONLY);
Run Code Online (Sandbox Code Playgroud)

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