第17章I/O系统流

IO流:

IO流:当程序需要读取数据的时候,就会开启一个通向数据源设备的流

IO有具体的分类

1 根据处理的数据类型不同:字节流和字符流
2 根据流向不同:输入流和输出流

字节流和字符流的区别:

1 字节流读取的时候,读到一个字节就返回一个字节字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时.先去查指定的编码表,将查到的字符返回
2字节流可以处理所有类型数据,如图片,MP3,AVI而字符流只能处理字符数据.
结论:只有是处理纯文本数据,就要优先考虑使用字符流.除此之外都用字节流
IO的体系.所具备的基本功能就有两个:读和写

  1. 字节流:inputStream(读),OutputStream(写)
  2. 字符流: Reader(读),Writer(写)

比较常用的流有 文件流——处理流——对象流

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 public static void main(String []args) throws FileNotFoundException,IOException {
FileInputStream w=new FileInputStream("D:\\CC.txt");//字节输入流 这是字节流输入流
BufferedInputStream d=new BufferedInputStream(w);//缓存区 这是缓存流
FileOutputStream c=new FileOutputStream("D:\\hhw.txt"); // 写出流 这是字节写出流
int b;
while((b = d.read())!=-1) {
c.write(b);
}
c.flush(); //刷新
d.close(); //关闭写出字节流
c.close(); //关闭写出缓存区字节流
}
}
字节流:
FileInputStream w=new FileInputStream("D:\\CC.txt");//字节输入流
FileOutputStream c=new FileOutputStream("D:\\hhw.txt"); // 写出流
InputStreamReader w=new InputStreamReader("D:\\CC.txt");//字符输入流
OutputStreamReader c=new OutputStreamReader("D:\\hhw.txt"); // 字符写出流

↓ ↑
FileInputStreamReader w=new FileInputStreamReader("D:\\CC.txt");//字符输入流
FileOutputStreamReader c=new FileOutputStreamReader("D:\\hhw.txt"); // 字符输出流

处理流:
BufferedInputStream d=new BufferedInputStream(w);//缓存区 可以整行读取 字节缓存流
BufferedOutputStream d=new BufferedOutputStream(w);//缓存区 可以整行写出 字节缓存流

对象流:
ObjectIputStream 对象序列化