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



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

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

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

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

相关内容

  • 没有找到相关文章

最新更新