2016-09-30 4 views
0

の末尾に新しいファイルを追加するには、データをファイルに書き込む必要があります。ファイルは最大サイズを超えることはできません。最大サイズに達すると、それはトップ/古いデータを削除し、新しいデータをファイルに追加する必要があります(ロールアップなど)。最大サイズ制限で1つのファイルを効率的に管理するには、Androidアプリでファイル

ファイルを読み込んで新しいデータと同じ量のデータを削除して、新しいデータを書き込む/追加するためのスペースを確保することができます。しかし、カットをして書き戻すためにファイル全体を読む必要があるたびに効率的ではありません。

2つのファイルを使用して回転すると、データが失われることがあります。私。両方のファイルがいっぱいになると、1つのファイルを最初から削除すると、古いデータの一部が失われます。

誰でも効率的に行うことを提案していますか?

+0

[循環バッファ](https://en.wikipedia.org/wiki/Circular_buffer)として 'RandomAccessFile'を使用してください。 – pskink

答えて

1

一部のデータが失われる可能性があります。私。両方のファイルがいっぱいになると、1つのファイルを最初から削除すると、古いデータの一部が失われます。

もちろん、ファイルを回転して削除する場合は、何かが失われます。しかし古いデータの削除方法を制御することができます。たとえば、最も古いデータを削除するだけですが、新しいデータは保持します。この場合、ファイルにタイムスタンプを付けるだけで、空き領域を確保するたびにファイルを名前(タイムスタンプ)でソートし、最も古いものを削除するだけです。

これは、カットと書き戻しを行うためにファイル全体を読み込む必要があるたびに効率的ではありません。

通常、回転するファイルは、個々のファイルの内容を変更してはいけません。ファイルをより小さなサイズに分割し、合計最大サイズを持つファイルのリストを保持することができます。ファイルごとに1MB(合計10MB)なので、データが11分の1になるたびに最も古いファイルを削除し、最新のファイルを10個だけ保持します。

関連する問題