私はファイル全体を上書きせずにファイルの一部を書き直すことができるカスタムバイナリファイル形式を工夫しています。データは可変長の「要素」で構成されています。これらの要素は、ファイル内で削除、挿入、または変更することができます。このような変更は、エレメントの長さを変更することがあります。ここでファイル全体の書き換えを避けるためのファイル構造
は、私が検討していますものです:
ファイルは2つの主要部分である:ヘッダーとボディ。
ボディは、平均して100個の要素を保持する所定のサイズのブロックに分割されます。要素が作成されると、要素が格納されるのに十分な余裕を持って最初のブロックに書き込まれます。
- 要素が変更されているときに、ブロックに十分な領域があればそれが書き換えられます。そうでなければ要素がブロックから削除され(ブロックが書き換えられます)、次に必要なスペース。
- ヘッダーには、各ブロックのアドレスへのポインタと現在のサイズが含まれています。このデータは固定幅なので、ヘッダー全体を書き換えることなく、1つのヘッダーエントリを変更できます。
私の質問: ヘッダーのサイズを増やす必要がある場合、追加のヘッダースペースを作成するために全身を書き直す必要があります。ヘッダーが本文とは別のファイルだった場合は、この問題はありませんが、2つのファイルがあるという考えは嫌です。ヘッダーとボディを1つの物理ファイルに保持する方法はありますか?それぞれを別の物理ファイルに拡張することはできますか?
ファイルへの書き込み頻度はどのくらいですか?いくつかの初期状態から始めて、しばらくの間、変更を記録するのですか、頻繁に変化し続ける構造で、一度に多くのコンテンツが変化しますか? – dasblinkenlight
あなたはZipファイルが何をしたかを行うことができます:ファイルの* end *にヘッダーを置いてください。 – Amy