如何在本地缓冲区中保存字符串,以便Scanner可以重新读取它?

时间:2011-03-19 18:37:35

标签: java string java.util.scanner

我正在开发一些处理HTML页面的项目。 我不想一遍又一遍地下载同一页面,所以我想在本地保存它。 我经常使用Scanner,但Scanner需要InputStreamReader。 现在我设法将HTML页面保存到本地StringBuffer,但我无法做到 此StringBufferScanner一起使用。

我可以将此StringBuffer用作InputStreamReader吗?如果没有,那么我可以使用哪种方法?

2 个答案:

答案 0 :(得分:3)

Scanner constructor有一个Readable。在所有Readable实现中,CharBuffer似乎最适合您的目的,因为您希望拥有可读和可写的源。

String string = getItSomehow();
CharBuffer buffer = CharBuffer.wrap(string);
// ...
Scanner scanner = new Scanner(buffer);
// ...

答案 1 :(得分:0)

也许有些事情如下:

new InputStreamReader(new ByteArrayInputStream(new StringBuffer().toString().getBytes()));

如果您想要这样做,您应该使用HTTP GET标头发送If-Modified-Since请求,以便正确检测已更改的网页。

您是否考虑过使用正确的HTTP代理?这样可以省去在应用程序中重新发明轮子的麻烦。 HTTP代理可能会表现得更好,并且可以被多个应用程序使用。