Я новичок в потоках Java, я хотел бы прочитать содержимое определенных файлов, а затем прочитать его с самого начала. Я создал BufferedInputStream и я запутался о документации BufferedInputStream.mark (интермедиат markLimit)Что такое ограничение чтения меток в bufferedinputstream
Документация говорит:
public void mark(int readlimit)
Этот метод отмечает положение в входе которого поток может «сбросить», вызвав метод reset(). Параметр readlimit - это количество байтов, которое может быть прочитано из потока после установки знака до того, как метка станет недействительной. Например, если вызов mark() вызывается с пределом чтения в 10, то, когда 11 байтов данных считываются из потока до вызова метода reset(), метка недействительна, и экземпляр объекта потока не требуется помните отметку.
Обратите внимание, что количество байтов, которое может быть запомнено этим методом, может быть больше, чем размер внутреннего буфера чтения. Он также не зависит от подчиненного потока, поддерживающего функцию метки/сброса.
Заменяет: марки в классе FilterInputStream
Параметры: readlimit - количество байт, которые могут быть считаны до отметки становится недействительным **
Моего кода:
public class Test {
public static void main(String[] args) throws IOException {
File resource = new File("beforeFix.txt");
FileInputStream fileInputStream = new FileInputStream(resource);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
int i = bufferedInputStream.read();
bufferedInputStream.mark(1);
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
bufferedInputStream.reset();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
bufferedInputStream.reset();
}
}
В приведенном выше коде я установил метку отметки как 1, но знак не становится недействительным в соответствии с документацией.
Может ли кто-нибудь четко объяснить мне, какова фактическая цель установки этого с помощью небольшого примера?
Заранее спасибо
, когда я звоню сброс(), он не бросил никаких исключений для меня. В соответствии с документацией отметка должна быть недействительной после того, как я прочитал второй байт, так как я установил ограничение метки на 1, но это не так. Итак, какова цель этого знака()? –
Используйте форматирование цитаты для цитируемого текста. И, пожалуйста, уберите жирный шрифт. Это больно глазам. – EJP