2011-02-04 38 views
16


Tôi đang cố đọc dòng tiếp theo mà không cần di chuyển con trỏ, có thể không?Có thể BufferedReader (Java) đọc dòng tiếp theo mà không cần di chuyển con trỏ không?

BufferedReader buf = new BufferedReader(new InputStreamReader(fileIS)); 

while ((readString = buf.readLine()) != null) { 
} 

Khi đọc dòng theo ý muốn, nhưng tôi cần phải viết dòng tiếp theo của dòng hiện tại.

điều đó là có thể?

tệp của tôi chứa dữ liệu yêu cầu Http, dòng đầu tiên là yêu cầu GET,
trong dòng thứ hai Tên máy chủ, tôi cần phải thoát khỏi Máy chủ trước khi GET có thể kết nối với nhau.
Host/+ url GET,

GET /logos/2011/family10-hp.jpg HTTP/1.1 
Host: www.google.com 
Accept-Encoding: gzip 

Cảm ơn.

Trả lời

35

Bạn có thể sử dụng mark()reset() để đánh dấu một vị trí trong luồng và sau đó quay lại vị trí đó. Ví dụ:

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 
+0

thực sự đã giúp Cảm ơn bạn. – kimo

14

Chỉ cần đọc cả dòng hiện tại và dòng tiếp theo trong vòng lặp.

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) {} 
} 
Các vấn đề liên quan