有没有办法让java能够判断文本文件中的一行何时结束?
我试图将文本文件中的信息放入int数组
1 2 3
4 5 6
7 8 9
如果文本文件是上面的数字,我希望代码能够存储1 2 3,然后能够告诉它停止,因为下一个数字在新行中
我无法在扫描仪oracle doc中找到任何可以帮助我解决此问题的布尔值
文本文件第一行中的数字量可能会有所不同,所以我不希望它只在读取3个数字后停止,这是我的代码目前所拥有的
答案 0 :(得分:0)
您可以使用BufferedReader逐行阅读,如下所示:
container
}
答案 1 :(得分:-1)
听起来您希望逐行阅读Scanner.nextLine()
和Scanner.hasNextLine()
。当然,如果你可以使用Apache Commons,那么FileUtils.readLines(File, String)
可以让你逐行阅读文件。一旦你有一行,你可以使用Scanner(String)
(根据Javadoc)
构造一个新的
Scanner
,用于生成从指定字符串扫描的值。
类似的东西,
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
Scanner strScanner = new Scanner(line);
// ...
}
正如@JonSkeet在评论中指出的那样,你也可以将line
拆分为白色空间,如
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] arr = line.split("\\s+");
// ...
}
正如@RealSkeptic指出的那样,也可能会使用Files.readAllLines(Path)
。这可能会给你一个完整的例子,如
// Get the user's home directory
String home = System.getProperty("user.home");
File f = new File(home, "input.txt");
try {
// Get all of the lines into a List
List<String> lines = Files.readAllLines(f.toPath());
// Get the line count to create an array.
int[][] arr = new int[lines.size()][];
// populate the array.
for (int i = 0; i < lines.size(); i++) {
// split each line on white space
String[] parts = lines.get(i).split("\\s+");
arr[i] = new int[parts.length];
for (int j = 0; j < parts.length; j++) {
// parse each integer.
arr[i][j] = Integer.parseInt(parts[j]);
}
}
// Display the multidimensional array.
System.out.println(Arrays.deepToString(arr));
} catch (IOException e) {
// Display any error.
e.printStackTrace();
}