Java基本字节流和字符流有什么不同?要逐个将一片二进制的数据输出到一个设备,或从一个设备中逐个读取二进制数据的片断,无论什么是输入输出设备,我们都要以一种抽象的方式对其进行描述,即:这种抽象描述方法被称为IO流,相应的抽象类是OutputStream和InputStream,用一个字节运算的不同的实现类代表不同的输入输出设备。
使用时,常常要把一段文字完整地输出去或读进去,用字节流就可以了吗?电脑里的所有东西都以二进制字节形式存在。对“中国”这几个字符,先得到相应的字节,然后再写到输出流中。在阅读的时候,第一个被读取,但是我们要用字符来显示,然后我们需要把字节转换成字符。
因为这种要求很大,所以人家专门提供了一个字流封装类。基础设备永远都只接受字节数据,有时要向底层设备写入字符串,需要把字符串转换为一个字节,然后才能写入。字符流是字节流的封装,字符流是直接接受字符串,在字符串中,在内部写到字节,在写到底层设备时,这一点很简单,便于我们在IO设别写或读取字符串。
当字符对字节进行转换时,要注意编码问题,因为字符串被转化为一个字节数组,实际上就是将字符转换成一种编码的字节形式,阅读与此相反。