2016-07-22 10 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に説明します。一般的に

、あなたはさらに知るために、ファイルのローテーション(ETCアーカイブのローテーションをトリガするファイルのサイズ、アーカイブ・ログの数、...)

をカスタマイズすることが、あなたは、ロギングAPIの回転のparamsを学ぶことができます。

関連する問題