[PHP-users 20319]Re: テキストファイルへの挿入書き込み
Kazumasa Gotoh
kgotoh @ cic-kk.co.jp
2004年 2月 9日 (月) 06:44:05 JST
From: Norio TOMITA <walkup @ ya.sunnyday.jp>
Date: Mon, 09 Feb 2004 01:06:55 +0900
> このファイル上のデータを1行だけ修正したい場合、どの様に行え
> ば良いでしょうか。書店に並ぶ本達には、カウンタの様に上書きで
> 済むものか、ログの様に追記で済むものしかなく、特定の一行だけ
> 修正して書き込み直す方法がありません。
一般に、SAM ファイルに対して途中のレコードの書き換え… つまり
上書きを行えるのは、当該レコード長が変らない場合だけです。
したがって、固定長レコードであれば任意の書き換えは可能ですが、
1行の長さがそれぞれ異なる様な可変長レコードでは原則的に
書き換えは不可能です。
これは、ファイルの記録形式を考えれば、自明の事となります。
例えばテキストエディタは、ファイルを自分の管理するバッファ上
(その形式は様々ですが)に原則として全て読み込み、修正後に
書き戻す場合は、全てのデータの再出力を行っています。
> csv全てを一旦全部配列に保存して、その一部を修正し、またファイ
> ルに保存し直す様な事をしなければならないのでしょうか?
まぁそういう事ですが、その用途であれば「一旦全部配列に保存」
する必要はないでしょう。
修正対象行以外に用はないので、1行読み込んだらすぐに書き出し、
修正対象行は修正後に書き出すようにすれば、バッファは 1行分で
済みます。ふつうはこうしますね。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
(株) セントラル情報センター
後藤和政 kgotoh @ cic-kk.co.jp
PHP-users メーリングリストの案内