• ベストアンサー

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

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

  • PHP
  • 回答数4
  • ありがとう数6

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

  • ベストアンサー
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% (4847/10260)
回答No.2

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

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

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

y-mine
質問者

補足

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

関連するQ&A

  • テキストファイルの中身について

    あるフォルダしたのテキストファイルとそのファルダしたのフォルダ中のテキストファイルについて、 例えば、”日本”と言う文字が有ったら、そのテキストファイル名を表示するようなの機能を実現したいです。 何を使ったら、いいですか? サンプルが欲しいです。 教えてください!お願いします。 ーーーーーーーーーーーーー temp-------a.txt |------b.txt |------temp1 |--------a1.txt |--------b1.txt       … などなど、 テキストファイルの中身に、”日本”という文字が存在したら、そのテキストファイル名を出力 ーーーーーーーーーーーーー

  • C# テキストファイルの中身のみを削除

    テキストファイルの中身(内容)だけを削除したいのですが... フォルダやファイルを削除するのはできます。 しかし、中身(内容)のみを削除するにはどうしたらよいかわからずにいます。 教えていただけませんか?? お願いします。

  • テキストファイルの出力について

    今、学校の課題でC言語を使ってプログラムを作っています。 20000個のデータを読み込んで、200個ずつに区切り、別々のテキストファイルで出力するというものです。 最初につくったのは、以下の通りです。 *********************************************** FILE *fp; { int b,i=0; data[0][i]=trend_data[0][i]; data[1][i]=trend_data[1][i]; fp = fopen("D1.txt","w"); for(i=0;i<=199;i++){ fprintf(fp,"%8.8f %8.8f\n",data[0][i],data[1][i]); } fclose(fp); fp = fopen("D2.txt","w"); for(i=200;i<=399;i++){ fprintf(fp,"%8.8f %8.8f\n",data[0][i],data[1][i]); } fclose(fp); ・・・ ***************************************** これだと20000まで繰り返し記述しなければならずかなり困難だと思いました。そこで、ループを作ろうとしたのですが、テキストファイルをループを使って複数作成する方法がわかりません。 以下のようなプログラムを作ったのですが、テキストファイルが一つしか作られませんでした。 どのように記述すればよいのでしょうか? **************************************** FILE *fp; { int a,i=0; int b=1; int c=199; data[0][i]=trend_data[0][i]; data[1][i]=trend_data[1][i]; start: fp = fopen("D[1+b].txt","w"); for(i=a;i<=c;i++){ fprintf(fp,"%8.8f %8.8f\n",data[0][i],data[1][i]); if(i > c) c = c+200; a = a+200; b++; goto start; fprintf(fp,"%8.8f %8.8f\n",data[0][i],data[1][i]); fclose(fp); } } ****************************************** よろしくお願い致します。

  • ファイルの中身の削除

     例えば、abc.txtに以下の内容のファイルがあったとします。  くさいおでん 30個 京都支店  虫だらけのおでん 40個 大阪支店  うまい焼き芋 20個 神戸支店  あまい飴 15個 兵庫支店 ファイルの書き込みは、fopen("abc.txt","a");で追加でいけますが、 例えば、ファイルの中から、虫だらけのおでんの行を消したいときは、どうしたらいいでしょうか?  だれかお願いします(;;)

  • バッチファイルでテキストファイルの中身を置換

    dir C:\*.zip /b /a-d /s > ジップ.txt で作成した、ジップ.txtがあります。 このテキストファイルをパス名を削除してファイル名のみに置換したいのですが、どなたか教えて頂けますか?

  • vbsでテキストファイル検索してファイルに書き込む

    初心者です。 テキストファイルを以下の条件で検索して、検索がマッチしたらそのファイルのレコード行を各条件によって指定されたファイルに書き込みたいです。 1)5桁目が"D"且つ 10~11桁目が"A5"の場合、ファイル"TEXT1.txt"に書き込む 2)5桁目が"G"且つ10~11桁目が"B6"の場合、ファイル"TEXT2.txt"に書き込む 3)上記に該当しない場合、ファイル"TEXT3.txt"に書き込む どなたかご教示のほど宜しくお願い致します。

  • 複数テキストファイルを読み込み、複数テキストファイルの出力

    質問は100個のテキストファイル(それぞれ10個のデータを含む)を読み込み、それぞれのテキストファイルから5個ずつデータを抽出し、200個のテキストファイルとして出力するというプログラムについての質問です。 以下が僕の作ったファイル出力部分のプログラムです。 /************/ void ecg_rr(fp,data_max) FILE *fp; { int b,i=0; int c=1; char fname[64]; data[0][i]=trend_data[0][i]; for(i=0;i<100;i++) sprintf(fname,"ss[%d].txt",1+i); fp = fopen(fname,"w"); fprintf(fp,"%4d\n",c); fprintf(fp,"%8.8f\n",data[0][0]); fprintf(fp,"%8.8f\n",data[0][2]); fprintf(fp,"%8.8f\n",data[0][4]); fprintf(fp,"%8.8f\n",data[0][6]); fclose(fp); sprintf(fname,"sk[%d].txt",1+i); fp = fopen(fname,"w"); fprintf(fp,"%4d\n",c); fprintf(fp,"%8.8f\n",data[0][1]); fprintf(fp,"%8.8f\n",data[0][3]); fprintf(fp,"%8.8f\n",data[0][5]); fprintf(fp,"%8.8f\n",data[0][9]); fclose(fp); } 複数ファイルの読み込み方がわからず、自分のプログラムだと1つのテキストファイルしか読み込めないので、16_4.batを作り、その中身を 16_4 読み込むテキストファイル名1.txt ss[1] 16_4 読み込むテキストファイル名1.txt sk[1] 16_4 読み込むテキストファイル名2.txt ss[2] 16_4 読み込むテキストファイル名2.txt sk[2] ・・・ とやったのですが、うまくいきませんでした。 どうすればよいのでしょうか。

  • Excel「テキストファイルのインポート」

    Excelの「テキストファイルのインポート」によってテキストファイル(仮に「a.txt」)をワークシート上に読み込んだ状態で、「a.txt」を削除しようとすると、「ファイルが開かれているため削除できない」旨のエラーメッセージが表示されます。 このとき、Excel上では「a.txt」が開かれていることは確認できませんが、マクロを使うなどの手段を用いると「a.txt」を閉じることはできるのでしょうか? 「a.txt」をインポートしたファイルを保存してしまえばいいことはわかっているのですが、あくまでインポートした直後の状態で「a.txt」を削除する手段を探しています。

  • 幽霊ファイルの削除

    ダウンロードしたTXTファイルにロックがかかっており、削除ができません。削除する方法をご教示願います。(中身無しのイタズラファイルでした。)

  • ファイルの中身の参照

    テキストファイル(DB.txt)の中身を参照する事が出来ません。 テキストファイルの中身にAと書いてあったら、Aドライブにバックアップするようにするのが目的です。 X(変数)ドライブにバックアップするトコまではできてます。 Dim X As String X = ここの部分がわからない。 よろしくお願いします。

専門家に質問してみよう