字符流和字节流
2019-03-04 本文已影响0人
蜻鸣
Unicode
简而言之就是一个统一的编码标准,一个字符集,为每个字符规定一个用来表示该字符的数字。
字节流和字符流
二者都是Java.io中的文件流操作,分为输入和输出。字节流是inputStream和outputStream,字符流是writer和reader,四个都是抽象类。
字符流处理单元是两个字节的Unicode,操作对象是字符、字符数组或者字符串。而字节流处理单元是一个字节,操作对象是字节和字节数组。所以字符流是Java虚拟机字节转换成两个字节的Unicode字符进行处理。
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的。
字节流:
InputStream
|-- FileInputStream(基本文件流)
|-- BufferedInputStream
|-- DataInputStream
字符流
Reader
|-- InputStreamReader(byte 到char的桥梁)
|-- BufferedReader(常用)
Writer
|-- OutputStreamWriter(char 到 byte的桥梁)
|-- BufferedWriter
|-- PrintWriter (常用)
而管道输入流和管道输出流是用于不同线程之间的通信:PipeInpuStream和PipeOutputStream