在以下代码中在 StringReader 周围使用 BufferedReader 与仅使用 StringReader 有什么区别?通过在两个示例的第 2 行加载 DOM,看来 BufferedReader 不是必需的?

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

VS

    InputSource is = new InputSource(new BufferedReader(new StringReader(html)));
    Document dom = XMLResource.load(is).getDocument();
有帮助吗?

解决方案

在这种特殊情况下,我看不到任何好处。总的来说有两个好处:

  • 非常方便的哦 readLine() 方法仅定义在 BufferedReader 而不是 Reader (此处无关)
  • BufferedReader 减少 IO,其中对底层读取器的单独调用可能会很昂贵(即更少的大块调用比大量的小调用更快)-同样,与 StringReader

剪切粘贴失败?

其他提示

编辑:下面我原来的答复。下面的不是有关在这种情况下,由于缓冲读取器被包裹一个StringReader,它包装的字符串。因此,有没有要进行缓冲,并BufferedReader中似乎是多余的。您的可能的做一个参数,使用最好的/一致的做法,但是这将是非常脆弱的。

一个复制/粘贴,或者可能是IDE驱动重构太远的可能的结果!

的BufferedReader将试图在一个更优化的方式来阅读。

即,将在一气呵成(在可配置量)较大的读取数据块,然后使可作为必需的。这将减少的数目的一些内存使用情况的费用从磁盘(等)的读取。

要从的Javadoc引述如下:

  

在一般情况下,每个读请求由   一个阅读器会导致相应的读   到进行请求的底层的   字符或字节流。它是   因此,建议一个包   周围的任何阅读器,其的BufferedReader   读()操作可能是昂贵的,例如   如FileReaders和InputStreamReaders

在的BufferedReader版本是从一些代码,用于从一个的FileReader读取复制?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top