一、字节输入/输出流
- 字节输入流InputStream
- 字节输出流OutputStream
二者都是抽象类不能实例化,但有不同实现的子类。
- FileInputStream/FileOutputStream:文件读写流
- ByteArrayInputStream/ByteArrayOutputStream:字节数组读写流。
-
DataInputStream/DataOutputStream:数据流
-
ObjectInputStream/ObjectOutputStream:直接读取对象流
创建流对象:
InputStream in=new FileInputStream("文件地址");
//创建输入流,需填写需要读入文件的地址
OutputStream out=new FileOutputStream("文件地址");
//创建输出流,需填写输出目标文件的地址
实例的常用方法:
read()方法 | 输入流方法以字节为单位进行读写, 当read()返回-1,表示读到文件尾部 |
close()方法 | 输入输出流不使用时,要用该方法关闭。 |
write()方法 | 输出流方法,将数据写入缓存流。 |
flush()方法 | 将缓存流的数据写入目标文件。 |
二、字符流
- Reader与Writer类:用于读写字符,以字节流为基础,本质上处理的还是字节。
以一个字符为单位读写,一个英文字符在Unicode码等于2字节。其实现子类:
- FileReader/FileWriter:文件读写流
- BufferedReader/BufferedReader:缓存加速读写流
- Scanner/PrintWriter:格式化方式读写流,内部使用了缓存区
- InputStreamReader
输出流有一个缓存区,先将数据写入缓存区,当缓存区满了的时候,才输出数据写入目标文件,或者使用flush、close刷新缓存区,直接写入目标文件。
常见方法:
read() | 读一个字符 |
write() | 写一个字符 |
readLine() | 按行读入字符 |
println() | 按行写入字符 |
三、组合过滤流模式
四、字符编码之乱码解决方案
JAVA可以通过以指定的编码方式打开文件,如图。