黑马程序员技术交流社区

标题: IO问题 [打印本页]

作者: 没有翅膀的小鸟    时间: 2014-7-9 22:31
标题: IO问题
怎么理解字节流和字符流?
作者: iPear    时间: 2014-7-9 22:39
说点个人的理解 首先字节就是一个byte(要成流就是byte[] 了) 字符就是一个char(当然成流了就是String了)
这个东西我认为从基础理解起就是 字节是一个八位的二进制 而一个字符是16位的二进制 而两个byte[]可以转换成一个String的位 具体的概念性的东西也说不大清 我是这么理解的
作者: doubandddk    时间: 2014-7-9 22:40
个人认为你就把字符流认为是一个个字符组成的,形象点理解就好了;知道怎么用就好了呗;
实际上字符流在底层也是通过字节流实现的;
作者: 人心如水    时间: 2014-7-10 00:01
说来话长,我就长话短说
1,为什么学习流:操作数据(比喻说你F盘里的文件存储复制等等操作)。
2,字符流底层:字节流+编码表(生活中的数据和计算机数据一一对应的一张表)。  所以必须先熟悉字节流
3,字节流:数据在硬盘中都是101010.。。。二进制存储,8个二进制形成1字节,那么我们就以字节为单位进行数据的操作。  -------->计算机中存储的都是字节数据(即我们看不懂的数据)。
4,字符流:生活中的数据都是字符数据(即我们能看懂的数据)
5,要想实现 字节数据---->字符数据  就会学到字符流

我这里大概写下,我建议你学习IO的时候最好先仔仔细细看一遍,再写一个IO大纲,先由分到总熟悉知识,再由总到分彻底掌握知识。
作者: 渠嘉树    时间: 2014-7-10 00:08
iPear 发表于 2014-7-9 22:39
说点个人的理解 首先字节就是一个byte(要成流就是byte[] 了) 字符就是一个char(当然成流了就是String了 ...

XUEXIXUEXI学习学习
作者: EarlyHeart    时间: 2014-7-10 00:12
1.字符流是为了对字符操作方便而对字节流的封装,底层还是字节流
2.字符流只能操作字符,字节流均可
作者: lancerjs    时间: 2014-7-10 02:04
用纯文本编辑器打开文件,如果是看得懂的文字,推荐用字符流操作,也可以用字节流操作,如果是乱码,就必须用字节流操作
作者: 歸羽    时间: 2014-7-10 09:50
字节流与字符流主要的区别是他们的的处理方式
字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化
这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联
在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的

在从字节流转化为字符流时,实际上就是byte[]转化为String时,
public String(byte bytes[], String charsetName)
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统的lang
而在字符流转化为字节流时,实际上是String转化为byte[]时,
byte[]    String.getBytes(String charsetName)
也是一样的道理

至于java.io中还出现了许多其他的流,按主要是为了提高性能和使用方便,
如BufferedInputStream,PipedInputStream等
作者: 青程    时间: 2014-7-10 09:57
字节流可以处理任何数据类型,字符流只可以处理文本类型
作者: 晴儿    时间: 2014-7-10 13:03
在整个IO包中,流的操作就分为两种:
作者: 张益达    时间: 2014-7-10 13:41
有一个是专门处理字的= = 。。明白了吧  




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