概念:
流是对输入输出的一种抽象。不同类型的输入输出,如文件等,都抽象为流。Java程序中,对于数据的输入/输出操作都是以“流”的方式进行。
分类:
按流的方向,可分为输入流和输出流;按流的内容,可分为字节流和字符流。根据两个分类标准衍生出四个重要的类:
此外,还可分为节点流和处理流。前者是从一个特定的地方(节点)读取数据,后者是对一个已有的流进行封装。如常用的缓冲处理BufferedReader,可以一个字符一个字符一直读到换行符为止。
用流实现文件读写:
一、单字符读写
FileReader reader = new FileReader(new File("文件路径"));
int i = reader.read();
FileWriter writer = new FileWriter(new File("文件路径"));
writer.print(i);
需要注意的是,单字符读写的有关参数和返回值都是int类型而非char,是因为要用返回-1表示到达文件末尾。
二、整行读写
BufferedReader reader = new BufferdReader(new FileReader(new File("文件路径"));
String s = reader.readLine();
PrintWriter writer = new PrintWriter(new FileWriter(new File("文件路径"));
writer.print(s);
这样就可以一行一行地读写文件了。
Java 1.5之后的新包中的 Java.nio.file.Files类,可以一口气读取全部的文件:
三、整个文件读取
List<String> lines = Files.readAllLines(
Paths.get("文件路径"),
Charset.forName("编码,如utf8或gbk")
);