Java-使用扫描仪从txt文件读取,下一行使用boolean

时间:2015-09-06 18:10:08

标签: java text java.util.scanner

有没有办法让java能够判断文本文件中的一行何时结束?

我试图将文本文件中的信息放入int数组

1 2 3 4 5 6 7 8 9

如果文本文件是上面的数字,我希望代码能够存储1 2 3,然后能够告诉它停止,因为下一个数字在新行中

我无法在扫描仪oracle doc中找到任何可以帮助我解决此问题的布尔值

文本文件第一行中的数字量可能会有所不同,所以我不希望它只在读取3个数字后停止,这是我的代码目前所拥有的

2 个答案:

答案 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();
}