【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.23516

ファイル存在チェック
投稿者---烏龍茶(2005/10/06 11:25:18)


いつもお世話になっております。

あるファイル(またはフォルダ)が存在するかどうかをチェックするため、

fp = fopen("あるファイルパス", "r");
if (fp != NULL) {
    printf("ファイルが存在する\n");
} else {
    printf("ファイルは存在しない\n");
}

としています。(フォルダの場合はopendirを使用)
このような方法で問題ないでしょうか?
一般にどのようにチェックするか教えてください。

環境は UNIX C/C++ です。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ファイル存在チェック 23518 tetrapod 2005/10/06 13:46:07


No.23518

Re:ファイル存在チェック
投稿者---tetrapod(2005/10/06 13:46:07)


fclose() してないようですが...

> このような方法で問題ないでしょうか?
「問題」の定義次第でしょう。何を問題と呼びますか?
この方法では読み込み権限の無いファイルは「無い」と判断されます。
これは問題になりますか?

> 一般にどのようにチェックするか教えてください。
もっと詳細な要件が決まらないと判断できないです。
stat() するかもしれませんし access() かもしれないし fopen() かもしれない。



この投稿にコメントする

削除パスワード

No.23521

Re:ファイル存在チェック
投稿者---烏龍茶(2005/10/06 14:32:15)


回答ありがとうございます。

問題の定義は自分でもあまり整理できていないのですが、
ファイルまたはフォルダが存在するかチェックし、存在するようであれば、そのファイルまたはフォルダにアクセス(読み込み、コピー、削除など汎用的に)するような処理を考えています。
今のところ、アクセス権限については考慮しないこととし、排他も考えていません。

で、「openなんてことしなくても、xxx()で一発だよ。」とか、「普通そんなアクロバティックなことしないよ。」などがもしかしたらあるのでは?と思い投稿したしだいです。

特におかしい処理でもないようですので、とりあえずはopenでチェックかけることにします。

tetrapodさん、本当にありがとうございました。


この投稿にコメントする

削除パスワード

No.23529

Re:ファイル存在チェック
投稿者---tetrapod(2005/10/06 16:43:39)


まあ状況次第だけどそういう用途なら fopen でもいいでしょうね。
とりあえずポータブルだし (fclose をお忘れなく)

俺ならたぶん stat() を使います。
ISO-C には無いけど POSIX 標準なので多くの処理系で使えます。
# cygwin だと激遅なのでアレげですが。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧