我搜索了类似的问题,但没有任何帮助。
考虑一个文件:
你好你好吗?
当时你在哪里?
我想在每一行结束后做一些操作。如果我使用next()
它不会告诉我何时到达第一行的末尾。
我也见过hasNextLine()
,但它只告诉我是否存在另一条线。
我搜索了类似的问题,但没有任何帮助。
考虑一个文件:
你好你好吗?
当时你在哪里?
我想在每一行结束后做一些操作。如果我使用next()
它不会告诉我何时到达第一行的末尾。
我也见过hasNextLine()
,但它只告诉我是否存在另一条线。
考虑使用多个扫描仪,一个用于获取每一行,另一个用于在您收到后扫描每一行。我必须给出的唯一警告是,您必须确保在使用完内部 Scanner 后关闭它。实际上,您需要在使用完所有Scanner 后关闭它们,尤其是内部 Scanner,因为它们会累加并浪费资源。
例如,
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
}
}
You can use Scanner and the method you mentioned:
Scanner scanner = new Scanner(new File("your_file"));
while(scanner.hasNextLine()){
String line = scanner.nextLine();
// do your things here
}
当我阅读本文时,不确定这是否相关或为时已晚。我对 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);
}
}