4

私のロガー コードでは、ログ ファイルの読み取りにFileInputStreamを使用しています。ログファイル「byteOffset」から最後に読み取られたファイルのバイト数が格納されます。リーダーがログを読む必要があるときはいつでも、FileInputStream.skip(byteOffset)そこから読みます。この文脈で、InputStream.skip()ドキュメントから以下のステートメントを見つけました。

この入力ストリームから n バイトのデータをスキップして破棄します。skip メソッドは、さまざまな理由で、より少ないバイト数(場合によっては 0) をスキップすることになります。これは、いくつかの条件のいずれかが原因である可能性があります。n バイトがスキップされる前にファイルの終わりに到達することは、1 つの可能性にすぎません。

ドキュメントに記載されていること以外に、実際にスキップされたデータが入力と異なる理由は何ですか? ログ リーダー コードで準備する必要があるすべてのケースを確認したいだけです。

4

1 に答える 1

3

実装に依存します。おそらくそれはバッファリングされたストリームであり、バッキング ストリームから読み取られたのは 100 バイトだけであり、さらに多くのバイトを取得するには時間がかかります。

(その部分を仕様に入れるのは良い決断ではなかったと思いますが、今は変更できません。)InputStream

于 2012-09-27T22:16:56.993 に答える