Я пытаюсь выяснить, для чего действительно нужны методы mark()
и reset()
из BufferedReader ?
Я понимаю, что они делают, но для перехода назад и вперед в каком-то тексте я их никогда не использовал - обычно я решаю эту проблему, читая либо последовательность символов, либо всю строку в массиве, либо StringBuilder и иди туда и обратно через него.
Я полагаю, что должна быть какая-то причина, по которой эти методы присутствуют в BufferedReader и других Reader реализациях, поддерживающих его, но я не могу предположить, почему.
Предоставляет ли использование mark()
& reset
некоторую выгоду по сравнению с чтением данных в нашем собственном массиве и перемещением по нему?
Я искал кодовую базу одного из моих больших проектов, над которыми я работаю (в основном, Java , используя Spring Boot ), с большим количеством зависимостей от пути к классам и единственное, для чего использовались методы mark & reset (только в очень немногих библиотеках), было пропуск необязательного символа спецификации в начале текстового файла. И даже для этого простого варианта использования я нахожу его немного хитрым.
Кроме того, я искал другие учебные пособия и в Stackoverflow (например, Что такое пометка и сброс в BufferedReader? ) и не смог найти никакого объяснения, почему на самом деле нужно решать подобные проблемы, используя пометить и сбросить . Все примеры кода объясняют только то, что методы делают на примерах "hello world" (без особой причины переход с одной позиции в потоке на предыдущую). Нигде я не мог найти никакого объяснения, почему кто-то на самом деле должен использовать его среди других способов, которые звучат более элегантно и на самом деле не хуже производительности.