質問: テキスト・エディタのバッファ管理 ディスク・ブロック・サイズが例えば4kbで,32mbのテキストを編集するとします.メモリ・サイズは16mbで,ファイル全体をキャッシュできないと仮定します. テキスト・エディタで,文章の先頭に1文字追加したとします.そしてセーブした場合,たった1文字の追加のために,それ以降のバイトストリームは,ぜんぶ1バイト下にずれるのでしょうか? 絵を使うと簡単に説明できるのですが,状況は理解できますでしょうか? 32mbバイトのデータを全部書き換えるというのは,非現実的だと思うので. ビデオ編集などでは,もっとインテリジェントにやっていると思います. テキスト・エディタの作り方を解説しているページなどありましたら, 教えてください. muleのソースコードを読む時間はありません. よろしくお願いします.
回答: ファイルって開いたままで無いとダメですか?オンメモリで操作するならそんなに時間が かかるとは思えないんですけど・・・最近の開発環境では文字列を扱うクラスなどが提供 されていますので、そんなに難しくないと思うんですけど・・・ ディスク上のアドレスを考えるから難しくなるんじゃないでしょうか?32mbくらいなら オンメモリでも何とかなると思うんですけどね。オンメモリと言ってもosの仮想メモ リに頼ってると思いますが・・・ ファイルの入出力管理にしてもosやapiなどに任せるようにすれば、悩む必要は無いと 思います。逆に、いまどきの開発環境はそんな下位レベルでの操作は推奨されませんね。 また、実際に2~3mbくらいのファイルを操作するとかなり重くなりますよ。 プログラミングに関しては「だと思う」ではなく、どんどん試してみることをお勧め します。その中で自分なりの考えが浮かぶ場合も有りますし。 10mbくらいのファイルが軽く読み書きできるエディタ作ってください。