我想從文本文件中讀取第1行,第4行,第7行等(每行3行),但不知道如何執行此操作,因爲nextLine()會按順序讀取所有內容。謝謝你的建議?從文本文件中讀取某些行
Scanner in2 = new Scanner(new File("url.txt"));
while (in2.hasNextLine()) {
// Need some condition here
String filesURL = in2.nextLine();
}
我想從文本文件中讀取第1行,第4行,第7行等(每行3行),但不知道如何執行此操作,因爲nextLine()會按順序讀取所有內容。謝謝你的建議?從文本文件中讀取某些行
Scanner in2 = new Scanner(new File("url.txt"));
while (in2.hasNextLine()) {
// Need some condition here
String filesURL = in2.nextLine();
}
如果你不已經有一個索引,告訴您該文件偏移,其中每行文件中開始,然後找到每一行的唯一方法是讀取文件順序。
你確定目標不只是輸出/第1,第4,第7等行嗎?您可以順序讀取所有行,但只保留您感興趣的行。
使用計數器和%
(模數)運算符,因此只讀取每第三行。
Scanner in = new Scanner(new File("url.txt"));
int i = 1;
while (in.hasNextLine()) {
// Read the line first
String filesURL = in.nextLine();
/*
* 1 divided by 3 gives a remainder of 1
* 2 divided by 3 gives a remainder of 2
* 3 divided by 3 gives a remainder of 0
* 4 divided by 3 gives a remainder of 1
* and so on...
*
* i++ here just ensures i goes up by 1 every time this chunk of code runs.
*/
if (i++ % 3 == 1) {
// On every third line, do stuff; here I just print it
System.out.println(filesURL);
}
}
您閱讀每一行,但只有過程每第三個:
int lineNo = 0;
while (in2.hasNextLine()) {
String filesURL = in2.nextLine();
if (lineNo == 0)
processLine (filesURL);
lineNo = (lineNo + 1) % 3;
}
的lineNo = (lineNo + 1) % 3
將循環lineNo
通過0,1,2,0,1,2,0,1,2,...
和線條將只當它處理了零(所以線1, 4,7,...)。
+1在我的答案中發現錯誤並提供正確的代碼:) – BoltClock 2010-08-11 00:01:08
+1不錯,但破壞教育的方式。哦,至少我還會得到報酬...... – karim79 2010-08-10 23:53:03
@ karim79:我評論了我的代碼,以解釋操作員如何工作,如果有幫助... – BoltClock 2010-08-10 23:54:02
錯誤,那將只讀取一行,每隔三次通過循環,並且每一行處理一行(如果處理在「if」中)或每處理三行(如果它在「if」之外)。 – paxdiablo 2010-08-10 23:56:08