黑马程序员技术交流社区

标题: 关于io输入输出流的一些问题 [打印本页]

作者: 杨青    时间: 2013-5-26 13:21
标题: 关于io输入输出流的一些问题
字节流和字符流的区别和对应关系,求解释
作者: 刘海龙    时间: 2013-5-26 18:31
字节流是以字节为单位传送数据,字符流是以字符为单位传送数据;字符流从根本上说也是一种字节流,这可以从它的原理中看出来:字符流,顾名思义就是指得字符而言的,比如一个单词:“你好”,如果按照字节流传送的话,可能它得表示成一连串的01来传送,而按照字符流传送的话,可能按照编码表会将“你好”表示成一个数字,比如8,来传送;可是从根本上讲,这个代码8最也会转变成二进制的01进行传送。(这就是我理解的字节流和字符流^^)
作者: clp    时间: 2013-5-26 18:52
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) 也是一样的道理




希望对你有用
作者: SOAR    时间: 2013-5-26 18:59
字节流更接近底层,数据存储在硬盘上的时候是按照01代码存放的,字节是计算机中存储信息的单位,当我们想读字符的时候就会出现问题了。字符流就是将这个转换过程帮我们包装了起来。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2