- ベストアンサー
file関数とファイルポインタ
ファイルの内容を(書き換えるために一旦)読み込む時に、 fgets関数と違ってfile関数は fopen関数を使わなくても済む、ということで 便利なので使ってみようと思っているのですが、 ちょっと躓いています。 set_file_bufferやflock、rewindが必要なのですが、 これらはどれも引数にファイルポインタを使います。 fopen関数を使っていないのでコレがないのですが、 どうすればいいのでしょうか? fopenのあとにfileを使う? fopenを使わなくても閉じる時にはfcloseが必要? でもfcloseもファイルポインタを使うし… よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> fopen(),fclose()と、file()は同時に使えますか? 使えます。 同一の処理であれば、 $file=file("hoge.txt"); $fp=fopen("hoge.txt","w"); foreah($file as $f) { (ファイルポインタを用いた処理) } って言う形でよく利用します。
その他の回答 (1)
- nightowl
- ベストアンサー率44% (490/1101)
PHP はよく知らないのですが、ウェブのマニュアルを見た限り、 file 関数はファイルの内容を読み込んで配列として返すのですよね? fopen() が必要でない代わり、低レベルなことは何一つできないと思われます。 set_file_buffer() や flock(), rewind() が必要であれば、fopen() からは逃れられません。 それならば、最初から fopen() しておいて、fgets() や fread() で読み込んだ方が いいのではありませんか?(Cそっくりですね) >fopenを使わなくても閉じる時にはfcloseが必要? file() だけを使い、fopen() しなければ fclose() は要らないでしょう。
お礼
なるほど、file()は読み込み専用、 ぐらいに考えておくといいのですかね。 掲示板の表示部分には重宝しそうです。 fgets()も使えないことはないのですが、 1行ずつ処理しなきゃいけないので多少複雑になります。 それでfile()と思ったわけです。 最後に1つだけ質問。 fopen(),fclose()と、file()は同時に使えますか? ご存知の方、よろしくお願いします。
お礼
ありがとうございます。 fopen()は使わなくても済む、というのは置いといて、 fgets()のかわりに使うぐらいの感覚で良さそうですね。 (大きなファイルだとfile()は負担になるけど)