Может ли BufferedReader (Java) читать следующую строку без перемещения указателя?
Я пытаюсь читать следующую следующую строку без перемещения указателя, возможно ли это?
BufferedReader buf = new BufferedReader(new InputStreamReader(fileIS));
while ((readString = buf.readLine()) != null) {
}
Пока будет читаться строка за строкой, как я хочу, но мне нужно написать следующую строку текущей строки.
возможно?
мой файл содержит данные запроса Http, первая строка - запрос GET,
во второй строке имя хоста, мне нужно вытащить хост перед GET, чтобы иметь возможность подключить его вместе.
Host/+ URL-адрес GET,
GET /logos/2011/family10-hp.jpg HTTP/1.1
Host: www.google.com
Accept-Encoding: gzip
Спасибо.
Ответы
Ответ 1
Вы можете использовать mark()
и reset()
для отметки места в потоке и затем вернуться к нему. Пример:
int BUFFER_SIZE = 1000;
buf.mark(BUFFER_SIZE);
buf.readLine(); // returns the GET
buf.readLine(); // returns the Host header
buf.reset(); // rewinds the stream back to the mark
buf.readLine(); // returns the GET again
Ответ 2
Просто прочитайте как текущую, так и следующую строку в цикле.
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(file, encoding));
for (String next, line = reader.readLine(); line != null; line = next) {
next = reader.readLine();
System.out.println("Current line: " + line);
System.out.println("Next line: " + next);
}
} finally {
if (reader != null) try { reader.close(); } catch (IOException logOrIgnore) {}
}