字符流与字节流的区别
文章目录
- 字符流与字节流的区别
- 1.字符流
- 2.字节流
- 3.两者的区别
1.字符流
字符流自动允许我们逐字符读/写数据,有助于执行16位Unicode的输入和输出;它是以reader和writer结尾的。Java中字符流最常见的类是FileReader和FileWriter。在内部,FileReader使用FileInputStream;同样,FileWrite使用FileOutputStream。
2.字节流
它逐字节处理数据,适用于处理二进制文件等原始数据。字节流操作最常用的类是FileInputStream和FileOutputStream。FileInputStream有助于从源读取,而FileOutputStream有助于写入目标。
3.两者的区别
1、定义不同;
字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
2、读写单位不同;
字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节
3、处理方式不同;
Java的字节流
InputStream是所有字节输入流的祖先OutputStream是所有字节输出流的祖先。
Java的字符流
Reader是所有读取字符串输入流的祖先writer是所有输出字符串的祖先。
4、缓冲区不同;
字节流读取的数据不经过缓存区。而字符流经过。
5、编码方式不同。字节流默认不使用缓冲区,而字符流使用缓冲区。字节流采用ASCII编码,字符流采用unicode编码。
结论:
1.如果一个程序频繁对一个资源进行IO操作,效率会非常低。此时,通过缓冲区,先把需要操作的数据暂时放入内存中,以后直接从内存中读取数据,则可以避免多次的IO操作,提高效率
2.真正存储和传输数据时都是以字节为单位的,字符只是存在与内存当中的,所以,字节流适用范围更为宽广
3.只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。