Android File.length()在写入时返回0

时间:2016-07-22 06:09:54

标签: java android file fileutils

我的应用中有一个日志文件,不断被写入,有时我需要检查它的大小。问题是每当我在另一个线程中快速检查其大小时,它有时会返回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?

2 个答案:

答案 0 :(得分:0)

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

通常,您可以自定义文件轮换(触发归档轮换的文件大小,归档日志的数量等等)

进一步了解,您可以研究日志API的旋转参数。

答案 1 :(得分:0)

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