ファイルの存在確認の方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
nix_nix

ファイルの存在確認の方法

#1

投稿記事 by nix_nix » 11年前

始めまして。現在DxLibを用いてプログラムを作成しています。

現在、ファイルの存在確認をなるべく高速で行いたいと思っているのですが良い方法が見つからないため質問致します。

あるディレクトリに "data_0 ~ data_255" の連番のファイルが存在します。
プログラムの起動時に、これらのファイルが本当に存在するかどうかを確認したいと考えています。

ファイルの存在確認として一般的なfopen(fopen_s)を使用する方法では、どうしても多少待たされてしまいます。
(多少とはいえ、待ち時間の間に見た目の動作を止めたくありません)
そこでDxLibの FileRead_openを非同期モードで使用することで解決しようと思いました。
FileRead_openの仕様を確認すると
-----
戻り値
0以外:ファイルハンドル
0:エラー発生
-----
とありましたので、戻り値が0以外であればファイルが存在するとして良いだろうと考えました。
しかし実際に試してみると、同期モードではこの通りの結果になるのですが、非同期モードではオープンに失敗しても0以外の値が返されます。
(正常なハンドルとの見分けがつきません)

これを解決するには、オープン完了まで待った後に CheckHandleASyncLoad で確認するしか無いのでしょうか。
完了まで待ってしまうと、あまり非同期にした意味が無いような気がします。
(仕様は分かりませんが、0~255のファイルを可能な限り平行してオープンするなら効果はあるのでしょうか)

どういった方法がいちばん早く、かつ(可能であれば)非同期で確認可能なのでしょう。

アバター
HolyWings
記事: 12
登録日時: 14年前

Re: ファイルの存在確認の方法

#2

投稿記事 by HolyWings » 11年前

WIN32 API の GetFileAttributes でチェックしてみてはどうですか?

閉鎖

“C言語何でも質問掲示板” へ戻る