WindowsでC言語のディレクトリが存在するかどうかを確認する方法は?
質問
質問
Windows C アプリケーションで、関数に渡されたパラメータを検証して、指定されたパスが存在することを確認したいのです。
C言語でWindowsにディレクトリが存在するかどうかを確認するにはどうすればよいですか。
*存在を確認してからパスを使用するまでの間に存在しなくなるというレースコンディションに陥る可能性があることは理解していますが、私はそれに対処することができます。
追加の背景
ディレクトリが存在するかしないかを明示的に知るには、パーミッションが絡むと厄介なことがあります。ディレクトリが存在するかどうかを判断しようとする際に、プロセスがそのディレクトリまたは親ディレクトリにアクセスする権限を持っていない可能性があります。 これは私のニーズにはOKです。 . ディレクトリが存在しないかアクセスできない場合、私のアプリケーションでは両方とも無効なパスの失敗として扱われるため、区別する必要はありません。(仮想) あなたのソリューションがこの区別を提供する場合、ボーナス ポイントがあります。
C 言語、C ランタイム ライブラリ、または Win32 API における任意のソリューションは問題ありませんが、理想的には、一般的にロードされるライブラリ (たとえば kernel32、user32 など) にこだわり、非標準のライブラリをロードするようなソリューションは避けたいと考えています (たとえば PathFileExists のように)。繰り返しになりますが、ソリューションがクロスプラットフォームである場合は (仮想) ボーナス ポイントがあります。
関連
Win32 プログラムを使用して、ファイルが存在するかどうかを確認するにはどうすればよいですか。
どのように解決するのですか?
このようにします。
BOOL DirectoryExists(LPCTSTR szPath)
{
DWORD dwAttrib = GetFileAttributes(szPath);
return (dwAttrib != INVALID_FILE_ATTRIBUTES &&
(dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
}
この GetFileAttributes () メソッドは、Kernel32.dll に含まれています。
関連
-
[解決済み] ディレクトリが存在するかどうかを確認するポータブルな方法 [Windows/Linux, C].
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] Windowsにpipをインストールするにはどうしたらいいですか?
-
[解決済み] Windows での Git リポジトリのディレクトリを無視する
-
[解決済み] WindowsのCMDで1行に2つのコマンドを実行するにはどうしたらいいですか?
-
[解決済み] Git for Windows でファイル名が長すぎる
-
[解決済み] while ( !feof (file) ) 」は、なぜいつも間違っているのですか?
-
[解決済み] プログラム終了前にmallocの後にfreeをしないと本当に何が起こるのか?
-
[解決済み】WindowsでTCPまたはUDPポートをリッスンしているプロセスを見つけるにはどうすればよいですか?
-
[解決済み】WindowsでGit Symlinksを使用する場合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
構造体の配列--[エラー] '['トークンの前に一次式があることが予想される
-
[C] レポートエラー 代入の左オペランドとしてlvalueが必要
-
未定義の `__isoc99_sscanf' への参照
-
C 言語のポインタ配列のポインタ型、ポインタに値を割り当てるために配列名を使用、コンパイル時の警告:互換性のないポインタ型からの初期化
-
[解決済み] mallocで文字列を確保する
-
[解決済み] C言語でのブーリアン値の使用
-
[解決済み] C言語標準に準拠した構造体の初期化方法
-
[解決済み] なぜC言語では構造体を頻繁にtypedefする必要があるのですか?
-
[解決済み] なぜalloca()の使用はグッドプラクティスとみなされないのでしょうか?
-
Win32プログラムを使用して、ファイルが存在するかどうかを確認するにはどうすればよいですか?