1.首先说说, byte和char的区别,用字节流时采用二进制的编码直接传输,用字符流则牵涉到本地系统的编码问题,java io中的部分api会根据操作系统或者jvm的参数配置自行进行字符流转换,这样会简化部分的编程过程,但如果是在网络通讯中,强烈建议使用byte字节流方式,减少程序因编码转换造成的种种问题 2.节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的 但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化 这两个之间通过InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联 在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的 在从字节流转化为字符流时,实际上就是byte[]转化为String时, public String(byte bytes[], String charsetName) 有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统的lang 而在字符流转化为字节流时,实际上是String转化为byte[]时, byte[] String.getBytes(String charsetName) 也是一样的道理
希望对你有用 |