![bc15e202c77080f3674e856447b80a6a.png](https://i-blog.csdnimg.cn/blog_migrate/4b13964623d4eecce0ed26187b8211fc.jpeg)
来自Java 8的java.io和java.nio.file包添加了许多方法来支持使用流的I/O操作。
我们可以从文件中读取文本作为字符串流。流中的每个元素表示一行文本。
我们还可以使用流从JarFile读取JarEntry,我们可以读取目录中的条目作为Path流。
自动关闭
调用stream上的close()方法将关闭底层文件。
或者,我们可以在try-with-resources语句中创建流,以便自动关闭底层文件。
例子
以下代码显示如何使用流读取文件的内容。
import java.io.IOException;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.util.stream.Stream;public class Main { public static void main(String[] args) { Path path = Paths.get("./Main.java"); try (Stream lines = Files.lines(path)) { lines.forEach(System.out::println); } catch (IOException e) { e.printStackTrace(); } }}
上面的代码生成以下结果。
![c94c72671b6583279838941aa1a503b8.png](https://i-blog.csdnimg.cn/blog_migrate/dd12a29ce5f66409fda46ab370c8c894.jpeg)
例2
以下代码显示如何使用流读取路径。
import java.io.IOException;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.util.stream.Stream;public class Main { public static void main(String[] args) { Path dir = Paths.get("."); System.out.printf("%nThe file tree for %s%n