• ベストアンサー

file関数とファイルポインタ

ファイルの内容を(書き換えるために一旦)読み込む時に、 fgets関数と違ってfile関数は fopen関数を使わなくても済む、ということで 便利なので使ってみようと思っているのですが、 ちょっと躓いています。 set_file_bufferやflock、rewindが必要なのですが、 これらはどれも引数にファイルポインタを使います。 fopen関数を使っていないのでコレがないのですが、 どうすればいいのでしょうか? fopenのあとにfileを使う? fopenを使わなくても閉じる時にはfcloseが必要? でもfcloseもファイルポインタを使うし… よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.2

> fopen(),fclose()と、file()は同時に使えますか? 使えます。 同一の処理であれば、 $file=file("hoge.txt"); $fp=fopen("hoge.txt","w"); foreah($file as $f) {   (ファイルポインタを用いた処理) } って言う形でよく利用します。

infinity
質問者

お礼

ありがとうございます。 fopen()は使わなくても済む、というのは置いといて、 fgets()のかわりに使うぐらいの感覚で良さそうですね。 (大きなファイルだとfile()は負担になるけど)

その他の回答 (1)

  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.1

PHP はよく知らないのですが、ウェブのマニュアルを見た限り、 file 関数はファイルの内容を読み込んで配列として返すのですよね? fopen() が必要でない代わり、低レベルなことは何一つできないと思われます。 set_file_buffer() や flock(), rewind() が必要であれば、fopen() からは逃れられません。 それならば、最初から fopen() しておいて、fgets() や fread() で読み込んだ方が いいのではありませんか?(Cそっくりですね) >fopenを使わなくても閉じる時にはfcloseが必要? file() だけを使い、fopen() しなければ fclose() は要らないでしょう。

参考URL:
http://php.planetmirror.com/manual/ja/printwn/ref.filesystem.php
infinity
質問者

お礼

なるほど、file()は読み込み専用、 ぐらいに考えておくといいのですかね。 掲示板の表示部分には重宝しそうです。 fgets()も使えないことはないのですが、 1行ずつ処理しなきゃいけないので多少複雑になります。 それでfile()と思ったわけです。 最後に1つだけ質問。 fopen(),fclose()と、file()は同時に使えますか? ご存知の方、よろしくお願いします。