2016-07-22 284 views
0

我的应用程序中有一个日志文件,它不断被写入,有时我需要检查它的大小。问题是,无论何时我在另一个线程中快速检查其大小,它有时会返回0,即使其中有明确的数据。Android File.length()在写入时返回0

例如文件大小的输出会是这个样子:(数字字节)

E/DataLogger: Size: 3403 
E/DataLogger: Size: 3454 
E/DataLogger: Size: 3454 
E/DataLogger: Size: 3454 
E/DataLogger: Size: 0 
E/DataLogger: Size: 3500 
E/DataLogger: Size: 3500 
E/DataLogger: Size: 3812 

我也试图与FileUtils.readFileToByteArray(),发现相同的行为。为什么这两种方法有时会随机返回0?

回答

0

事实证明,我偶尔会覆盖该文件,该文件会在写入新数据之前将文件大小暂时设置为0。

0

我不知道您正在使用的日志API,但是当文件达到定义的大小时,大多数日志API都具有轮换系统。 发生旋转时,记录器可能会对文件或文件内容执行一些移动操作以归档实际日志文件。其中一次解释文件大小为0。

一般情况下,你可以自定义文件旋转(文件大小触发归档旋转,归档日志的数量,等等)

为了进一步了解,你可以研究你的日志API的旋转PARAMS。