2011-10-03 45 views
3

我需要將文本文件的第一行n作爲行讀取(每行可能包含或不包含空格)。文本文件的其餘部分包含空格分隔的令牌的未知的號碼N(分隔符是空格,製表符和換行符的混合,所有符號都必須作爲分隔符處理)。使用BufferedReader和Scanner讀取文本文件

我知道如何使用BufferedReader讀取行。我知道如何使用Scanner讀取令牌。但是,如何以上述方式將這兩種不同的閱讀模式組合到一個文本文件中?

+0

您能否給我們一些代碼是什麼你試過了,什麼不行? – MasterCassim

+0

我想我的問題很清楚。除了可能有幾個實例化語句之外,沒有代碼示例。 –

回答

7

對於這兩項任務,您都可以使用Scanner。請參閱Scanner.nextLine方法。

如果你真的需要同時使用一個BufferedReaderScanner你可以簡單地做這樣的:

byte[] inputBytes = "line 1\nline 2\nline 3\ntok 1 tok 2".getBytes(); 
Reader r = new InputStreamReader(new ByteArrayInputStream(inputBytes)); 

BufferedReader br = new BufferedReader(r); 
Scanner s = new Scanner(br); 

System.out.println("First line: " + br.readLine()); 
System.out.println("Second line: " + br.readLine()); 
System.out.println("Third line: " + br.readLine()); 

System.out.println("Remaining tokens:"); 
while (s.hasNext()) 
    System.out.println(s.next()); 

輸出:

First line: line 1 // from BufferedReader 
Second line: line 2 // from BufferedReader 
Third line: line 3 // from BufferedReader 
Remaining tokens: 
tok     // from Scanner 
1      // from Scanner 
tok     // from Scanner 
2      // from Scanner 
+0

我同意,結合這兩個增加顯着的複雜性。使用Scanner.nextLine(),然後在正則表達式中分割字符串將使您可以將元素放入很少很好的,可維護的代碼行中。 – spikeheap

+0

雖然我看不出分裂的位置。 – aioobe

+1

+1所有這些事情現在看起來很明顯,所以你把它們放出來!謝謝。 –

相關問題