0

アプリで Android Logcat から最後の 200 行ほどを印刷しようとしています。これまでのところ、InputStreamReader を使用して Logcat を BufferedReader に入れることができました。問題は、バッファリングされたリーダーの最後にジャンプしてから逆方向に読み取る方法、または最後の 200 行のすぐ上にジャンプしてそこから印刷する方法がわからないことです。ログ全体を読み取るブルート フォース メソッドは実行したくありません。もっとエレガントな解決策があることを願っています。

ありがとう。

4

2 に答える 2

2

BufferedReader は行の概念を認識せず、データのストリームのみを認識します。行の長さがわからないと、(EOF - 200 行) にジャンプする方法を見つけるのに苦労するでしょう。

その後に RingBuffer を詰め込み、200 行を保存して、最も古い行を最新のものに置き換えることをお勧めします。そうすれば、BufferedReader は ringBuffer を満たし続け、それを使用して読み取ります。

別の代替手段は、200行ごとにログをクリアすることです...

于 2012-07-27T17:04:42.353 に答える
1

したがって、これは私が探していたソリューションではありませんが、私が望んでいたことを行います。ログを BufferedReader に取り込み、それを並べ替えて出力する代わりに。出力ファイルのサイズを指定するには、logcat タグを使用します。

Runtime.getRuntime.exec("logcat -r 160 -f mylog.log")

そして、ファイルを読み返します。

于 2012-07-30T13:59:50.420 に答える