我正在從源讀取InputStream(fis),並且在其上必須執行多重搜索。我正在使用Scanner類,並在每次搜索後對其進行實例化。但它只是第一次。有沒有辦法重置掃描儀對象?我無法控制流。InputStream無法運行的Java掃描器
Scanner sc = new Scanner(new BufferedReader(new InputStreamReader(
fis, MIFConstants.ENCODING_UTF_8)));
int count = 0;
while (sc.hasNextLine()) {
count++;
sc.nextLine();
}
System.out.println(count);
sc = new Scanner(new BufferedReader(new InputStreamReader(fis,
MIFConstants.ENCODING_UTF_8)));
count = 0;
while (sc.hasNextLine()) {
count++;
sc.nextLine();
}
System.out.println(count);
第二次打印返回零。有關於此的任何想法?
爲什麼你需要評估和打印兩次文件中的行數? – EJP 2012-03-20 01:25:10
我必須一次又一次地在輸入流中搜索一些行。所以我必須在同一個流上進行多次掃描。我的第一個掃描工作,但下一個不會導致它已經達到EOF。我想如果我創建一個新的掃描儀對象,它應該從流的開始處開始。任何其他方式我可以處理這個? – 2012-03-20 01:39:32
您*無法*在同一個流上執行多次掃描,如上所示。你將不得不重新打開它。但是這是非常低效的。您應該在文件的一次掃描中掃描需要掃描的所有內容。 – EJP 2012-03-20 01:41:13