FileWriterを使用して書き込み中にファイルの内容をシフトすることは可能ですか?
ファイルの先頭にデータ定数を書き込む必要があります。そうすると、ファイルが上書きされます。
これを行うにはどのような手法を使用する必要がありますか、それともファイルを書き込むたびにファイルのコピーを作成する必要がありますか(新しいデータを上にして)?
2 に答える
ファイルの特定のバイトを上書きし、他のバイトは上書きしない場合は、seekとwriteを使用して上書きできます。ファイル内のすべてのバイトの内容を変更する場合(たとえば、ファイルの先頭に1バイトを追加するなど)、新しいファイルを作成し、書き込みが完了した後で名前を変更する必要があります。
「完了後、オフセットxのバイトの内容はどうなりますか?」という質問に対する答えを考えてみてください。xの可能な値の大部分について、答えが「以前の値ではない」場合は、新しいファイルが必要です。
「完了後、オフセットxのバイトの内容はどうなるのか」という質問に答えるのではなく、考え方を変えて、ファイルシステムやハードディスクファームウェアで実行できない理由を尋ねましょう。a)ファイルにアクセスする別のモードを提供します[たとえば、インライン] b)ファイルの長さを前または中央または最後に追加されたバイト数だけ増やしますc)交差点から始まる各バイトを次のように移動しますnewcontent.lengthの位置
これらの操作は、アプリケーション開発者に任せるよりも、ディスクファームウェアまたはファイルシステムの実装レベルで処理する方が簡単で高速です。ファイルシステムの作成者やハードディスクのベンダーがすぐにそのような機能を提供することを願っています。
よろしく、サンバ