как BufferedInputStream.доступные работы?

        FileInputStream in=new FileInputStream("dd.txt");
        BufferedInputStream bufi= new BufferedInputStream(in);
        System.out.println(bufi.available());
        int half =bufi.available()/2;
        bufi.skip(half);
        System.out.println(bufi.available());

выход:

7

4

в «dd.txt » есть 1234567

но почему bufi может пропустить, прежде чем я использую bufi.read (), я имею в виду, когда данные передаются во входной поток?

1 ответ

  1. Он работает, добавляя количество байтов, буферизованных в настоящее время, возможно, ноль, к значению, возвращенному available()методом обернутого потока. В этом случае обернутым потоком является a FileInputStream, available()метод которого возвращает, возможно, неправильно, количество байтов, оставшихся для чтения в файле.

    Нет никаких причин, почему skip()не должно быть возможно до a read(). Данные никогда не передаются в imoitbstream. Он считывается входным потоком.