2016-07-22 104 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。