• ベストアンサー

テキストファイルの中身をまとめて削除したい

テキストファイルの中身をまとめて削除したいのですが 例えばa01.txtからz01.txtまである場合 fopen'w'でまとめて削除する場合、どう記述するのでしょうか? ご教示お願い致します。

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

  • ベストアンサー
noname#244856
noname#244856
回答No.3

ごく普通にループさせます。 foreach (range('a', 'z') as $alpha) { fclose(fopen("{$alpha}01.txt", 'w')); } なお、同時アクセスを考慮してファイルロックを行う場合は foreach (range('a', 'z') as $alpha) { $fp = fopen("{$alpha}01.txt", 'a'); flock($fp, LOCK_EX); ftruncate($fp, 0); flock($fp, LOCK_UN); fclose($fp); } と書きましょう。 ちなみにfcloseは書く人が多いので "何となく" 書いていますが、書かなくても勝手にメモリ解放されるので必ずしも必要ではありません。C言語の場合は書かない場合「プログラム終了時」に解放される仕様となっているので書く方が望ましいのですが、PHPの場合は変数のガベージコレクションと同時にリソースのガベージコレクションも行われるので不要です。

y-mine
質問者

お礼

すいません。ファイル名を間違って書いていました。 書き直したらうまくいきました。 ありがとうございました。

y-mine
質問者

補足

新しくファイルは作られていますが、元のままです。 空ファイルになっていません。 なぜでしょうか?

その他の回答 (3)

noname#244856
noname#244856
回答No.4

>> 新しくファイルは作られていますが、元のままです。 ん、どういうことでしょうか… 「新しく」なのか「元のまま」(元からあった)のか、どっちですか? 矛盾した文章に感じます。 >> 空ファイルになっていません。 では何が書き込まれているのでしょうか?

y-mine
質問者

補足

中身は元のままですが、作成日時が変わっています。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

複数まとめてと言うのは不可能です。 一つ一つ、書き込みオープンしてクローズする。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>中身をまとめて削除したい 中身を空にするということですか? 削除したあとに新規作成(touch)してはどうですか? http://php.net/manual/ja/function.touch.php

y-mine
質問者

補足

中身を空にしたいです。 複数をまとめてするにはどうするのでしょうか?

関連するQ&A