Class BufferedInputStream 中的 skip 方法没有恰好跳过 n 个字节
skip method in Class BufferedInputStream is not skipping exactly n bytes
int a = bis.available();
System.out.println("*****"+a);
bis.skip(10000);
a = bis.available();
System.out.println("*****"+a);
bis.skip(10000);
a = bis.available();
System.out.println("*****"+a);
输出:
*****369608
*****361424
*****351424
当我使用skip时,如果我试图跳过10000,它只会跳过8184字节。如果我再这样做,这次它会正常工作。
这是按规定工作的。来自 spec:
The skip method may, for a variety of reasons, end up skipping over some smaller number of bytes, possibly 0. [...] The actual number of bytes skipped is returned.
你的测试没有证明任何东西,因为你误用了 available()
。 Javadoc against 中有一个特定的警告,使用它作为流中剩余的字节数。这不是它的目的。
int a = bis.available();
System.out.println("*****"+a);
bis.skip(10000);
a = bis.available();
System.out.println("*****"+a);
bis.skip(10000);
a = bis.available();
System.out.println("*****"+a);
输出:
*****369608
*****361424
*****351424
当我使用skip时,如果我试图跳过10000,它只会跳过8184字节。如果我再这样做,这次它会正常工作。
这是按规定工作的。来自 spec:
The skip method may, for a variety of reasons, end up skipping over some smaller number of bytes, possibly 0. [...] The actual number of bytes skipped is returned.
你的测试没有证明任何东西,因为你误用了 available()
。 Javadoc against 中有一个特定的警告,使用它作为流中剩余的字节数。这不是它的目的。