Подтвердить что ты не робот

Может ли 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  

Спасибо.

4b9b3361

Ответ 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) {}
}