Java流 – Java文件流
来自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<String> lines = Files.lines(path)) { lines.forEach(System.out::println); } catch (IOException e) { e.printStackTrace(); } } }
上面的代码生成以下结果。
例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", dir.toAbsolutePath()); try (Stream<Path> fileTree = Files.walk(dir)) { fileTree.forEach(System.out::println); } catch (IOException e) { e.printStackTrace(); } } }
上面的代码生成以下结果。