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

时间:2013-01-29 08:56:42

标签: android c file-io

我正在使用SDCARD扫描仪扫描每个文件夹和图像文件。

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

唯一的“低级别”功能是open

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

虽然fopen不应该慢得多。