找遍了类似的问题,但没有帮助。
考虑一个文件:
你好你好吗?
当时你在哪里?
我想每一行结束后做一些操作。 如果我使用next()
它不会告诉我,当我已经达到了第一行的末尾。
此外,我所看到的hasNextLine()
但如果存在另一条线或不它只是告诉我。
找遍了类似的问题,但没有帮助。
考虑一个文件:
你好你好吗?
当时你在哪里?
我想每一行结束后做一些操作。 如果我使用next()
它不会告诉我,当我已经达到了第一行的末尾。
此外,我所看到的hasNextLine()
但如果存在另一条线或不它只是告诉我。
考虑使用一个以上的扫描仪,一个让每一行,另通过各行扫描你已经收到了上去。 我必须给唯一需要注意的是,你必须确保以关闭内扫描你使用它完成之后。 其实你需要关闭所有扫描器你使用它们完成后,尤其是内扫描仪,因为它们可以积少成多,浪费资源。
例如,
Scanner fileScanner = new Scanner(myFile);
while (fileScanner.hasNextLine()) {
String line = fileScanner.nextLine();
Scanner lineScanner = new Scanner(line);
while (lineScanner.hasNext()) {
String token = lineScanner.next();
// do whatever needs to be done with token
}
lineScanner.close();
// you're at the end of the line here. Do what you have to do.
}
fileScanner.close();
可扫描通过线的文本行,并使用在令牌拆分每行String.split()
方法。 这样,你知道,当一个行已经结束,并且还对每行所有的标记:
Scanner sc = new Scanner(input);
while (sc.hasNextLine()){
String line = sc.nextLine();
if (line.isEmpty())
continue;
// do whatever processing at the end of each line
String[] tokens = line.split("\\s");
for (String token : tokens) {
if (token.isEmpty())
continue;
// do whatever processing for each token
}
}
不知道当我读这本是相关的或过晚。 我是比较新到Java,但这似乎为我工作时,我遇到了类似的问题。 我只是用一个do-while循环利用简单的字符串表示的文件说明符的结束。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;`enter code here`
public class Main {
public static void main(String[] args) {
List<String> name = new ArrayList<>();
Scanner input = new Scanner(System.in);
String eof = "";
do {
String in = input.nextLine();
name.add(in);
eof = input.findInLine("//");
} while (eof == null);
System.out.println(name);
}
}
您可以使用扫描仪和你所提到的方法:
Scanner scanner = new Scanner(new File("your_file"));
while(scanner.hasNextLine()){
String line = scanner.nextLine();
// do your things here
}