• ベストアンサー

ファイル or ディレクトリの判別

cherry_moonの回答

  • ベストアンサー
回答No.2

現実的にはnitscapeさんの方法でほぼ問題ありませんが、 正確には、S_IFMT と論理和をとった結果が S_IFDIR と一致するものがディレクトリです。 (sb->st_mode & S_IFMT) == S_IFDIR #うちの環境では、_S_IFDIR ではなく、S_IFDIR でした。 /usr/include/sys/stat.h をみてみればわかると思います。 #/usr/include も環境によって違います。

you314
質問者

お礼

お礼が遅れて申し訳ありません。無事、解決する事が出来ましたm(__)m

関連するQ&A

  • ディレクトリの判別

    FreeBSD5.4でstat()関数のS_ISDIRを使ってディレクトリかどうかを判別したいのですが、 S_ISDIRでは普通のファイルもディレクトリと認識してしまいます。もしご存知の方がいらっしゃいましたら、何卒ご教授くださいませ。 --------------------------------------------- #include <stdio.h> #include <string.h> #include <sys/types.h> #include <dirent.h> #include <sys/stat.h> #include <stdlib.h> int createFileList(char *directoryName){ DIR *directoryId; struct dirent *directoryPointer; struct stat fi; directoryId=opendir(directoryName); while((directoryPointer=readdir(directoryId))!=NULL){ stat(directoryPointer->d_name,&fi); if (!S_ISDIR(fi.st_mode)) printf("%s\n",directoryPointer->d_name); } closedir(directoryId); return 0; } ---------------------------------------------

  • stat関数をJavaで実現するには?

    C言語をJavaで置き換える質問です。 C言語のプログラムで下記のようなファイルチェックを行っています。  struct stat st;  stat(file, &st);  if ((st.st_mode & 040000) == 0 ||    (st.st_mode & 020000) == 0) {    エラー処理  } 上記の処理をJavaではどのように実現できるでしょうか? 環境は下記の通りです。 OS:Solaris 9 J2SE 5.0 ご教授願います。

  • fstatでファイルがリンクかどうか分かるか

    c言語でファイル操作の勉強をしています. 引数にファイル名を与えてプログラムを実行するとして, そこからfstatでそのファイルがリンクかどうかを, 判別する方法はありますか. また,statなら判別できますか? パソコンはunixです. よろしくお願いします.

  • S_IFREG

    C言語を勉強し始めた初心者です。 質問タイトルにある通り、S_IFREGをググってみると stat関数で 以下フラグが st_mode フィールド用に定義されているようなのですが 「S_IFREG 通常のファイル」のような検索結果が返ってきます。 ここでいうこの通常ファイルとは、どのようなファイルを表すのでしょうか?通常という意味がよくわかりません。

  • ディレクトリ内のファイル名取得

    C言語初心者です。 ディレクトリ内のファイル名を出力し、それをテキストファイルに書き込むというプログラムを作成したいのですが、初心者なため何から初めていいのかわかりません。 よろしければ、考え方や手順、サンプルプログラムなど書いていただけたらうれしいです。よろしくお願いいたします。

  • perlのNet::FTPで、ファイルかディレクトリか調べたい

    現在、Perlでリモートバックアップする簡単なスクリプトを 書いています。 そのためにNet::FTPモジュールを使っているのですが、 use Net::FTP; $ftp = Net::FTP->new($hostname); $ftp->login($user,$pass); $mydirs = $ftp->ls($backupdir); のようにlsメソッドでファイル一覧を取得した後で、 各ファイルがファイルなのか、ディレクトリなのか 調べたいと思っています。しかしC言語のstat関数の ようなメソッドはNet::FTPにはなさそうです。 どうすれば調べられるか、アドバイスいただけないでしょうか?

    • ベストアンサー
    • Perl
  • ディレクトリの選択方法

    ファイルを選択する場合は ☆OPENFILENAME構造体☆ を使いますが ディレクトリを選択する場合にはどんな構造体を使うのでしょうか?

  • ファイルの入出力

    今までに大統領になった人の就任日、代、名前などデータがCSVファイルとしてあります。そのファイルをfgets関数で1行ずつ読み込み、大統領になった回数が多い順に並び替えて新しいcsvファイルに出力したいと考えています。 構造体にそのデータを入れていきたいと思うのですが、その構造体にデータを入れるにはどのようにしたら良いのでしょうか??またどのような構造体を作れば良いのでしょうか??win98でc言語を使用しています。

  • ファイルオープン&ファイルクローズ

     C言語でデータの種類ごとにディレクトリーを用意し、データを振り分けたいのですが。。  fopenすると同じディレクトリーでしかファイルを呼び出したり、保存したりしかできないですよね。ちがうディレクトリーのファイルの呼び出し、ファイルの保存は出来ないでしょうか?また、ディレクトリーの作成なんてことは、C言語ではできないでしょうか?  誰か知っている人がいましたら、よろしくお願いします。

  • ファイルの中身

    現在C言語を勉強中です。テキストファイルの読書き パイナリーファイルの読書き、構造体の保存方法まではなんとか理解できたのですが。  mdbファイル(Access)やリッチテキストファイルの中身はいったいどうなっているのですか。データ構造はいったいどうなっているのでしょうか。まったく想像もつきません。ファイルの中身の調べ方等教えてください。 漠然とした質問で申し訳ないのですがよろしくお願いします。