2020/7/8
一、概念
I/O是Input/Output的缩写,是用于处理设备之间数据传输的技术。在Java程序中,对于数据的输入输出操作以“流(stream)”的方式进行。java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。
二、分类
1. 输入流 :磁盘 -----> 内存 InputStream(字节流)、Reader(字符流)
输出流 :内存 -----> 磁盘 Output Stream(字节流)、Writer(字符流)
2. 字节流 :8bit,用于操作字节文件,包括 .mp3、.mp4、.rmvb、.jpg、.doc、.ppt、.avi
字符流 :16bit ,用于操作普通文本文件,包括 .txt、.java、.c、.cpp
3. 节点流 :FileInputStream/FileOutputStream/FileReader/FileWriter
处理流 :非节点流(缓冲流/转换流)
节点流看作一根水管,处理流就是水管外面包的一层。处理流在已经存在的流(节点流或处理流)之上,通过对数据的处理提供更强大的读写功能。
分类 |
字节输入流 |
字节输出流 |
字符输入流 |
字符输出流 |
抽象基类 |
InputStream |
OutputStream |
Reader |
Writer |
访问文件 (节点流) |
FileInputStream |
FileOutputStream |
FileReader |
FileWriter |
缓冲流 (处理流) |
BufferedInputStream |
BufferedOutputStream |
BufferedReader |
BufferedWriter |
转换流 |
|
|
InputStreamReader |
OutputStreamWriter |
对象流 |
ObjectInputStream |
ObjectOutputStream |
|
三、方法
1.输入流
2.输出流
四、步骤
1. FileReader
(1)实例化File类对象,指明需要操作的文件(文件必须要在磁盘真实存在,否则报异常)。
File file = new File(“hello.txt”);
(2)创建流对象,将文件加载进流。
FileReader fr = new FileReader( file );
(3)数据读入,创建一个临时存放数据的数组。
char[] cbuf = new char[5];
int len;
while((len = fr.read(cbuf)) != -1){
for(int i = 0;i < len;i++){
System.out.print(cbuf[i]);
} }
(4)关闭资源
fr.close();
- FileWriter
(1)创建File类对象
(2)创建输入输出流对象
(3)数据的读入和写出操作
(4)关闭流资源
对于字节流FileInputStream和FileOutputStream和上面的过程一样。
五、缓冲流(处理流的一种)
1.缓冲流作用
套接在已有的流之上。
提高流的读取、写入的速度。原因:内部提供了一个缓冲区。
2.步骤
(1)造文件
(2)造节点流
(3)造缓冲流
(4)读取、写入
(5)关闭外层流
(6)关闭内存流(可以省略,因为关闭外层流的同时,内层流会自动关闭)
3.代码示例