簡體   English   中英

將掃描儀用於多行文本文件

[英]Using scanner for a multi-line text file

我正在研究一個讀取文本文件的程序。 我必須為文件的每一行執行一個單獨的方法。 我可以這樣做:

LineNumberReader myReader = new LineNumberReader(new FileReader("filename"));

Scanner scanner = new Scanner(myReader.readLine());
while (scanner.hasNext()) { ... }

並將后兩行放在一個循環中,這樣我就可以解析每一行的標記。 但我想知道是否有任何方法可以做到這一點,而無需每次迭代都實例化一個新的掃描儀對象。

使用一個掃描程序讀取每一行的Java代碼:

Scanner myScanner = new Scanner(new File("filename"));
while (myScanner.hasNextLine())
{
   String line = myScanner.nextLine();
    ...
}

您可以將Reader和掃描儀組合在一起,只需將Reader傳遞給掃描儀,然后循環

LineNumberReader myReader = new LineNumberReader(new FileReader("filename"));

Scanner myScanner = new Scanner(myReader);  // <== scanner uses Reader
while (myScanner.hasNextLine()) {
    String line = myScanner.nextLine();
}

@Max Zoome的例子是一個很好的方法,但它有一個問題,這個循環將infinite所以我建議你使用以下版本:

String line;
while (myScanner.hasNextLine() && (line=myScanner.nextLine()!=null))
{
   // Do whatever you want to do 
}

替代方案

當你想使用BufferedReader line by line讀取文件時line by line是一個很好的方法,

由於Scanner用於從流的內容中解析令牌,因此BufferedReadersynchronizedScanner則不是。

FileReader in = new FileReader("yourFileName");
BufferedReader br = new BufferedReader(in);

while ((line=br.readLine()) != null) {
    System.out.println(line);
}
in.close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM