質問

ファイルを開いて、QTextStreamを取得しています。次に、readline()を使用して、ラインごとにストリームを読み取ります。行が特定の文字列と一致するとき、私はそれを別の文字列に置き換える必要があります。行が完全に交換されるという動作が必要です(つまり、行が「長点」であり、「単語」に置き換える場合、行には「単語」と「単語」のみを含める必要があります)。

現時点では、Seek()を使用しており、<<オペレーターを使用して特定の場所に文字列を入れますが、最後の文字列の残骸は残っているので、「単語」のようなものが残っています。これを防ぎ、前のライン全体が私の新しいラインに完全に置き換えられるようにするにはどうすればよいですか?

役に立ちましたか?

解決

私の知る限り、テキストファイルの塊を単純に削除することはできません。交換用の文字列のサイズが同一の場合、それらの正確なバイトを交換できる場合があり、それが短い場合は、空のスペースをヌルで満たすことで問題をハッキングできる可能性があります。

それをしたくない場合は、新しいファイルを作成し、古いファイルから各行を読み取り、メモリ内のその行に必要な変更を加えてから、新しいファイルにその行を書き留める必要があります。これが完了したら、元のファイルを新しいファイルに置き換えることができます。

ファイルにチャンクを追加/削除できる場合は、HDDにかなり断片化されたファイルが残っている可能性が高いでしょう。より多くの文字を挿入する必要がある場合、新しいデータが古いデータが占めるスペースの量に単に収まることができず、データを削除するとファイルに穴が残るため、余分なフラグメントを作成する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top