Вопрос

В чем разница между использованием BufferedReader вокруг StringReader в следующем коде и использованием только StringReader?Загружая DOM во второй строке обоих примеров, кажется, что BufferedReader не нужен?

    InputSource is = new InputSource(new StringReader(html));
    Document dom = XMLResource.load(is).getDocument();

ПРОТИВ

    InputSource is = new InputSource(new BufferedReader(new StringReader(html)));
    Document dom = XMLResource.load(is).getDocument();
Это было полезно?

Решение

В данном конкретном случае я не вижу никакой выгоды.В целом есть два преимущества:

  • О, так удобно readLine() метод определен только в BufferedReader скорее, чем Reader (здесь не имеет значения)
  • BufferedReader уменьшает количество операций ввода-вывода, когда отдельные вызовы базового считывателя потенциально дороги (т.е.меньшее количество коротких вызовов выполняется быстрее, чем много маленьких) - опять же, не имеет значения для StringReader

Вырезать и вставить не удалось?

Другие советы

РЕДАКТИРОВАТЬ:Мой оригинальный ответ ниже.Нижеприведенное не в данном случае это актуально, поскольку буферизованное средство чтения оборачивает StringReader, который оборачивает String.Таким образом, буферизация не требуется, и BufferedReader кажется избыточным.Ты мог приведите аргумент в пользу использования лучших/последовательных практик, но это было бы довольно неубедительно.

Возможно, результат копирования/вставки или, возможно, слишком глубокого рефакторинга, управляемого IDE!

BufferedReader попытается прочитать более оптимальным способом.

То есть он будет считывать большие объемы данных за один раз (в настраиваемом объеме), а затем предоставлять их по мере необходимости.Это уменьшит количество операций чтения с диска (и т. д.) за счет некоторого использования памяти.

Цитата из Javadoc:

В общем, каждый запрос на чтение, сделанный с читателем, вызывает соответствующий запрос на чтение из базового символа или байтового потока.Поэтому рекомендуется обернуть буферизатор вокруг любого читателя, чьи операции read () могут быть дорогостоящими, такими как FileReaders и InpintStreamReaders

Версия BufferedReader была скопирована из какого-то кода, который использовался для чтения из FileReader?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top