我的应用中有位置服务。出于调试目的,我想记录(到文本文件)一些事件,如“新坐标”,“服务onDestroy”,“服务onStartCommand”,“坐标发送到后端”,等等。 但我面临着一个问题。日志文件每天获得350多条新行..所以..在3天内我有一个1000行的文件 我的想法是在最后几天只维护3(或在这种情况下为N)并删除3天前写的内容。
但是:
如果您知道处理这种情况的另一种有效方法,请告诉我吗?
答案 0 :(得分:2)
如果没有索引到文本文件的方法,如果不读取文件的每一行(直到某个点),解析它并找到日期,就没有办法解决它。
不要保留文件。保留一个数据库。将其中一列设为“创建时间”。然后,您可以轻松删除创建时间早于某个阈值的行。
getContentResolver().delete(
yourUri,
"created_time < ?",
new String[] { System.currentTimeIllis() - Integer.toString(TimeUnit.DAYS.toMillis(3)
);
(或者其他东西,请测试你自己的SQL ......)
作为旁注,1000行文本文件不算什么。除非你经常这样做,否则阅读和解析它并不重要。如果您每天读取并修剪1x文件,没问题。
另一个解决方案是旋转文件(log - &gt; log.1,log.1 - &gt; log.2,...,log.n-1 ---&gt; log.n) 。这当然不会对任何特定文件的大小设置硬性限制。