Как сохранить строку в локальном буфере, чтобы сканер мог ее перечитать? - PullRequest
1 голос
/ 19 марта 2011

Я работаю над проектом, который работает с HTML-страницами. Я не хочу загружать одну и ту же страницу снова и снова, поэтому я хочу сохранить ее локально. Я часто использую Scanner, но для Scanner нужен InputStreamReader. На данный момент мне удалось сохранить HTML-страницу в локальном StringBuffer, однако я не могу сделать это StringBuffer должно использоваться с Scanner.

Могу ли я сделать это StringBuffer для использования InputStreamReader? Если нет, то какой метод я могу использовать?

Ответы [ 2 ]

3 голосов
/ 19 марта 2011

Scanner имеет конструктор , принимающий Readable. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *. * * * * * * * * * * * * 10 * * * * * * * * * * * * * * 10 * * * * * * * * * * * * * * * * *.

String string = getItSomehow();
CharBuffer buffer = CharBuffer.wrap(string);
// ...
Scanner scanner = new Scanner(buffer);
// ...
0 голосов
/ 19 марта 2011

Возможно, что-то вроде:

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

Если вы хотите сделать это правильно, вам все равно следует отправить запрос HTTP GET, используя заголовок If-Modified-Since, чтобы правильно определить страницу, которая была изменена.

Рассматривали ли вы использование правильного HTTP-прокси? Это избавит вас от необходимости заново изобретать колесо в вашем приложении. HTTP-прокси, вероятно, будет работать лучше и будет использоваться более чем одним приложением.

...