とっておきの「まかない飯」を教えて下さい!

はじめまして、
今Javaでテキストファイルの中身を書きかえるという処理を行っています。追加書きこみや、修正などはなんとかできると思うのですが、1行削除するというのはどのようなやりかたをすればいいのでしょうか。よろしくお願いします。

A 回答 (3件)

こんにちは



Javaに限った話しでは無く、一般的な話しです。

aaa.txtのn行目を削除したい場合
aaa.txtをReadOnlyでオープンする。
xxx.tmpをWriteでオープンする。
n-1行までをaaa.txtから読み込み、xxx.tmpに書き出す。
n行はaaa.txtから読み込むが、xxx.tmpには書き出さない。
n+1行以降ははaaa.txtから読み込み、xxx.tmpに書き出す。
aaa.txt、xxx.tmpをクローズする。
aaa.txtを削除してxxx.tmpをaaa.txtにリネームする。

といった流れです。
aaa.txtが共有ファイルであれば、xxx.tmpがある場合は、aaa.txtを読み込まないと言うようなプログラミングをすれば良いと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
その方法は頭にもあったのですが、ファイルの中身が増えるほど処理が遅くなるのではと思い、ためらっていました。やはり1行だけ削除と言う処理はないのでしょうか?

お礼日時:2003/05/28 13:58

> ファイルの中身が増えるほど処理が遅くなるのではと思い、ためらっていました。

やはり1行だけ削除と言う処理はないのでしょうか?

確かに、自分でこのようなプログラムを作ると、「重そうだなぁ」と思ってしまいます。しかし、たとえ「1行削除」を行うためのコマンドのようなものがあらかじめ用意されていたとしても、結局はそのコマンドの処理の中で「重そう」な処理が実行されるのですから、どちらにしても同じことです。

どんな方法をとったとしても、ファイルを読み取って行数をカウントしなければ、1行削除を行うことはできないのですから。
    • good
    • 0

こんにちは


「改行コードから改行コードまで削除」してみてはいかがでしょう。

この回答への補足

回答ありがとうございます。
なるほど、それは良いアイデアなのですが、
削除には具体的に何を使うのが望ましいのでしょうか?
今考え付くのはStringクラスを使い文字を「null」に変換するぐらいなのですが、ファイルレベルでの削除も可能なのでしょうか?

補足日時:2003/05/28 13:53
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報