5

各フォルダと画像ファイルをスキャンするSDCARDスキャナーを実行しています。

私はCコードを使用しており、opendir、readdir、fopenAPIを使用してディレクトリとファイルを列挙しています。私はdirent、DIR変数を持っています。

問題は、ディレクターのトラバースに約25秒かかるのに、fopen()に時間がかかりすぎる(10000ファイルの場合は300秒)ことです。

ハンドル、dir_inoなどを使用してファイルを開く操作を高速化し、ディレクトリハンドルなどを使用してファイルを開くことができるAPIはありますか?

これまでのところ、dirent-> dir_ino、DIR *を使用しようとしましたが、うまくいきませんでした。

fopenよりも時間がかからない低レベルのAPIを探しています。

編集ftsとftwapisは役に立ちますか?それらはディレクトリのトラバースのみに関連しているようです...他のハックや方法はありますか?

4

1 に答える 1

1

唯一の「低レベル」機能はopen

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

ただし、fopenそれほど遅くなることはありません。

于 2013-01-29T09:01:18.877 に答える