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);
Выход:метод пропуска в классе BufferedInputStream не пропуская ровно п байт
*****369608
*****361424
*****351424
Когда я использую пропуск, если я пытаюсь пропустить 10000, то это будет только пропустить 8184 байт. Если я снова это сделаю, на этот раз он будет работать нормально.
Так что мне нужно использовать это возвращаемое значение, чтобы вычислить новое значение, которое мне нужно пропустить снова, правильно ли? Почему это произошло .. – G1ooom
Исправить. Что касается того, почему он ведет себя так: я не знаю, и спецификация расплывчата по этому поводу («множество причин»). Если я должен угадать, я бы сказал, вероятно, какую-то оптимизацию производительности. – duckstep
Большое спасибо. – G1ooom