[解決済み] ディレクトリが存在するかどうかを確認するポータブルな方法 [Windows/Linux, C].
2022-03-04 20:58:14
質問
指定したディレクトリが存在するかどうかを確認したい。Windowsでのやり方は知っています。
BOOL DirectoryExists(LPCTSTR szPath)
{
DWORD dwAttrib = GetFileAttributes(szPath);
return (dwAttrib != INVALID_FILE_ATTRIBUTES &&
(dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
}
とLinuxの2種類があります。
DIR* dir = opendir("mydir");
if (dir)
{
/* Directory exists. */
closedir(dir);
}
else if (ENOENT == errno)
{
/* Directory does not exist. */
}
else
{
/* opendir() failed for some other reason. */
}
しかし、私はこれを行うためのポータブルな方法が必要です...私が使用しているOSに関係なく、ディレクトリが存在するかどうかをチェックする方法はありますか?Cの標準ライブラリ的な方法とか?
プリプロセッサーディレクティブを使用して、異なるOS上でこれらの関数を呼び出すことができることは知っていますが、それは私が求めているソリューションではありません。
結局、今のところ、こんな感じです。
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
int dirExists(const char *path)
{
struct stat info;
if(stat( path, &info ) != 0)
return 0;
else if(info.st_mode & S_IFDIR)
return 1;
else
return 0;
}
int main(int argc, char **argv)
{
const char *path = "./TEST/";
printf("%d\n", dirExists(path));
return 0;
}
解決方法は?
stat() は、Linux.、UNIX、Windowsでも動作します。
#include <sys/types.h>
#include <sys/stat.h>
struct stat info;
if( stat( pathname, &info ) != 0 )
printf( "cannot access %s\n", pathname );
else if( info.st_mode & S_IFDIR ) // S_ISDIR() doesn't exist on my windows
printf( "%s is a directory\n", pathname );
else
printf( "%s is no directory\n", pathname );
関連
-
[解決済み】単項演算子「*」の型が無効(「int」がある)C言語でのエラー
-
[解決済み] rubyでディレクトリからすべてのファイルを要求する最良の方法?
-
[解決済み] Pythonでディレクトリが存在するかどうかを確認する方法
-
[解決済み] Javaでファイルが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] ファイルが使用中であるかどうかを確認する方法はありますか?
-
[解決済み] 標準C++/C++11,14,17/Cを使用してファイルが存在するかどうかを確認する最速の方法?
-
[解決済み] Goでファイルが存在するかどうかを確認する方法は?
-
[解決済み] C言語でファイルが存在するかどうかを確認する最も良い方法は何ですか?
-
[解決済み] WindowsとLinuxのディレクトリ名で禁止されている文字は何ですか?
-
[解決済み] パスがファイルかディレクトリかを確認する良い方法?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Valgrind が "Invalid write of size 8" で文句を言う。
-
[解決済み】変数の警告が設定されているが使用されていない
-
[解決済み】 `S_ISREG()` とは何ですか、そして何をするのですか?
-
[解決済み】「無効なイニシャライザー」と表示されるのですが、何が間違っているのでしょうか?
-
[解決済み】C 未知の型名「my_structure」。
-
[解決済み】LinuxのI_PUSHに相当するもの
-
[解決済み】「複数の定義」「最初に定義されたのはここです」エラーについて
-
[解決済み】警告:引数「互換性のないポインタ型から」を渡す[デフォルトで有効]。
-
[解決済み】インクリメントオペランドとして lvalue が必要です。
-
[解決済み】.axfファイルとは何ですか?