2016-09-30 33 views
0

,需要将一些数据写入文件。该文件不能超过最大尺寸。如果达到最大大小,它应该删除顶部/旧数据并向文件追加新数据(如卷起)。如何在Android应用程序中有效地维护一个具有最大大小限制的文件,但追加新的文件结尾

可以通过读入文件来完成,并删除与要添加的新数据相同数量的数据,以便为新数据写入/附加空间。但是这样做效率不高,因为每次需要读取整个文件进行剪切和回写。

如果使用两个文件旋转它可能会丢失一些数据。即当两个文件都已满时,然后删除一个文件从头开始,一些旧数据丢失。

任何人都有建议有效地做到这一点?

+0

使用'RandomAccessFile'作为[循环缓冲区](https://en.wikipedia.org/wiki/Circular_buffer) – pskink

回答

1

它可能会丢失一些数据。即当两个文件都已满时,然后删除一个文件从头开始,一些旧数据丢失。

如果你正在旋转和删除文件,当然会丢失一些东西。但是您可以控制旧数据的删除方式,例如只删除最旧的数据,但保留较新的数据。在这种情况下,只需使用时间戳命名文件,并且每次要释放空间时,只需按名称(即时间戳)对文件进行排序,然后删除最早的文件。

这样做效率不高,因为每次需要读取整个文件进行剪切和回写时,效率都不高。

通常旋转文件不应该修改单个文件的内容。您可以将文件拆分为更小的尺寸,并保留最大总尺寸的文件列表,例如每个文件1MB共10MB,因此只要数据扩展到第11位并保留10个最新文件,就会删除最旧的文件。

相关问题