如何将字符串保存在本地缓冲区中以便扫描仪可以重新读取它?

发布于 2024-10-25 09:07:11 字数 346 浏览 2 评论 0原文

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

我可以将此 StringBuffer 用作 InputStreamReader 吗?如果不行的话我可以用什么方法呢?

I am working on some project which deals with HTML pages.
I don't want to download the same page over and over again, so I want to save it locally.
I use the Scanner a lot, however the Scanner need a InputStreamReader.
For now I managed to save the HTML page to a local StringBuffer, however I can't make
this StringBuffer be used with the Scanner.

Can I make this StringBuffer be used as an InputStreamReader? If not, then what method can I use?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

三岁铭 2024-11-01 09:07:11

扫描器构造函数< /a> 采用 Readable 。在所有 Readable 实现中, CharBuffer 似乎最适合您的目的,因为您希望拥有一个可读可写的源。

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

Scanner has a constructor taking a Readable. Of all Readable implementations, the CharBuffer seems to suit your purpose the most since you want to have a readable and writeable source.

String string = getItSomehow();
CharBuffer buffer = CharBuffer.wrap(string);
// ...
Scanner scanner = new Scanner(buffer);
// ...
幻想少年梦 2024-11-01 09:07:11

也许是这样的:

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

如果您想正确执行此操作,则无论如何都应该使用 If-Modified-Since 标头发送 HTTP GET 请求,以便正确检测已更改的页面。

您是否考虑过使用适当的 HTTP 代理?这将为您省去在应用程序中重新发明轮子的麻烦。 HTTP 代理的性能可能会更好,并且可供多个应用程序使用。

Perhaps something along the lines of:

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

If you want to do this right, you should send the HTTP GET request anyway, using the If-Modified-Since header, in order to correctly detect a page that has been changed.

Have you considered using a proper HTTP proxy though? That would save you the hassle of re-inventing the wheel in your application. An HTTP proxy would probably perform better and it would be usable by more than a single application.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文