0

たとえば、XML などのコーディング言語で書かれたファイルがあるとします。ファイル全体を文字列に変換してから行を変更し、文字列全体をファイルに書き直すのではなく、1行だけ書き直すことは可能ですか?

4

2 に答える 2

2

一般的に、いいえ。ファイルシステムは通常、ファイルの途中でデータを挿入または変更するという考えをサポートしていません。

データファイルが固定サイズのレコード形式の場合、ファイルの残りの部分を上書きせずにレコードを編集できます。XMLのようなものの場合、理論的には、意味的に無関係な空白を挿入することで1つの値を短い値で上書きできますが、大きな値を書き込むことはできません。

ほとんどの場合、ファイル全体を書き換える方が簡単です。可能な場合はストリーミング方式で読み書きするか(ファイルが大きすぎて一度にメモリに読み込むことができない場合)、またはファイル全体をいくつかのファイルにロードするだけです。 -メモリデータ構造(例XDocument)、変更を加えてから、ファイルを再度保存します。(何らかの理由で保存操作が失敗した場合にデータが失われないように、別のファイルに保存してからファイルを移動することを検討することをお勧めします。)

これらすべてが高額になりすぎる場合は、複数のファイル(つまり、それぞれが小さい)またはデータベースの使用を検討する必要があります。

于 2012-04-09T09:03:24.600 に答える
1

置き換えたい行が、置き換えたい新しい行よりも大きい場合は、何らかの種類のパディング (空白文字 ' ' など) が許容される限り可能です。アプリケーションに影響を与えます。

一方、新しいコンテンツが置き換えられるコンテンツよりも大きい場合は、すべてのデータを下にシフトする必要があるため、ファイルを書き直すか、少なくとも置き換えられた行以降にする必要があります。

XML について言及しているため、問題に間違った方法でアプローチしている可能性があります。必要なのは、特定の XML ノードを置き換えることでしょうか? その場合、DOM を使用して XML をノードの階層に読み込み、そこに追加/更新/削除してから、XML ツリーをファイルに書き戻すことを検討してください。

于 2012-04-09T09:10:28.363 に答える