我有一个项目,目标的一部分是拥有尽可能短的代码。我已经做了我能想到的一切,以使其尽可能紧凑,但是我想知道以下代码是否还有更多捷径

public static void read(String[] input) throws IOException {
    for (String s : input) {
        BufferedReader b = new BufferedReader(new FileReader(s));
        while (b.ready()) {
            String[] val = b.readLine().split(" ");
            for (String c : val) System.out.println(c);
        }
        b.close();
    }
}

最佳答案

这取决于您所说的“紧凑”。您可以例如更改

String[] val = b.readLine().split(" ");
for (String c : val) System.out.println(c);


进入

for (String c : b.readLine().split(" ")) System.out.println(c);


或者使用与Scanner类几乎相同的方法,这会使您的代码更短,更易读。

public static void read(String[] input) throws IOException {
    for (String s : input) {
        Scanner scanner = new Scanner(new File(s));
        while (scanner.hasNext())
            System.out.println(scanner.next());
        scanner.close();
    }
}




您也可以尝试这种方式(基于Christian Fries回答的概念)

public static void read(String[] input) throws IOException {
    for (String s : input)
        System.out.println(new Scanner(new File(s)).useDelimiter("\\Z").next().replace(' ', '\n'));
}


如您所见,这不会让您使用close扫描程序,但是由于File资源不是Closable,因此您不必调用其close方法,因此这种方法似乎很安全。

07-27 13:50