Java8 教程第十七章之读写文件

本套JAVA8教程由于是有英文翻译过来的,如果有翻译不对的地方还请多多包涵。

本节课先简单的介绍下Java8有哪些新特性,对于Java6/7版本做出哪些更改.那废话不多说,赶紧开始今天的课程吧.

在Java 8中,您可以使用Files.lines将文件读取为Stream。

比如硬盘中一个a.txt文件

line1
line2
line3
line4
line5

Java 8 Read File + Stream

 public static void main(String args[]) {

        String fileName = "c://a.txt";

        //read file into stream, try-with-resources
        try (Stream stream = Files.lines(Paths.get(fileName))) {
            stream.forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

输出

line1
line2
line3
line4
line5

Java 8 Read File + Stream + Extra

此示例显示如何使用Stream过滤内容,将整个内容转换为大写并将其作为List返回。

public static void main(String args[]) {
        String fileName = "c://.txt";
        List list = new ArrayList<>();
        try (Stream stream = Files.lines(Paths.get(fileName))) {
            //1. filter line 3
            //2. convert all content to upper case
            //3. convert it into a List
            list = stream
                    .filter(line -> !line.startsWith("line3"))
                    .map(String::toUpperCase)
                    .collect(Collectors.toList());
        } catch (IOException e) {
            e.printStackTrace();
        }
        list.forEach(System.out::println);

    }

输出

LINE1
LINE2
LINE4
LINE5

BufferedReader + Stream

自1.8以来添加了一个新方法lines(),它允许BufferedReader将内容返回为Stream。

    public static void main(String args[]) {

        String fileName = "c://.txt";
        List list = new ArrayList<>();
        try (BufferedReader br = Files.newBufferedReader(Paths.get(fileName))) {
            //br returns as stream and convert it into a List
            list = br.lines().collect(Collectors.toList());
        } catch (IOException e) {
            e.printStackTrace();
        }
        list.forEach(System.out::println);
    }

输出

line1
line2
line3
line4
line5

以上就是java8中对file的操作, 相对来讲简单了很多. 赶紧动手敲敲吧.

欢迎留言讨论

你可能感兴趣的:(Java8 教程第十七章之读写文件)