7个回答
2013-04-15
展开全部
有中文就用字符流,没中文可以用字节流,这个应该根据你具体情况而定,就是看这个文件里面内容的字符是什么样的,像中文就是一个字节放不下,需要用两个字节来存储,那么字符流一个字符一个字符的往里读,所以能读出来,你用字节流就不行了,一个字符一个字符的往里读,把一个汉字拆成一半了,到时候操作系统不认识,显示都问号,
一看到二进制你有啥不明白的,好多人都知道java里面1个字符等于2个字节,1个字节等于8位,像背顺口溜一样,其实啥意思都不知道,我都服了,1个字节等于8位,8位啥呀?2进制代码啊,也就是01序列,这个序列是8位数,中文比较大,得占16位,所以是2个字节。 答案补充 第三行打错字了,是:用字节流就不行了,一个字节一个字节的往里读 答案补充 谁拷贝答案了,哪些答案都是垃圾,没一个正确的,我拷贝它干什么,
内存的存储体上面分若干个存储单元,一个存储单元可以存储8位或者16为,或者32位的,或者....的01序列,一个字节等于8位,比如11111111,一个汉字在计算机内部要使用2个字节来存储,一个装不下,也就是16位的01,你用字节流读,一下读8位出来,还有8位给人家仍了那能行,么 答案补充 赶紧看 计算机组成原理 去吧
一看到二进制你有啥不明白的,好多人都知道java里面1个字符等于2个字节,1个字节等于8位,像背顺口溜一样,其实啥意思都不知道,我都服了,1个字节等于8位,8位啥呀?2进制代码啊,也就是01序列,这个序列是8位数,中文比较大,得占16位,所以是2个字节。 答案补充 第三行打错字了,是:用字节流就不行了,一个字节一个字节的往里读 答案补充 谁拷贝答案了,哪些答案都是垃圾,没一个正确的,我拷贝它干什么,
内存的存储体上面分若干个存储单元,一个存储单元可以存储8位或者16为,或者32位的,或者....的01序列,一个字节等于8位,比如11111111,一个汉字在计算机内部要使用2个字节来存储,一个装不下,也就是16位的01,你用字节流读,一下读8位出来,还有8位给人家仍了那能行,么 答案补充 赶紧看 计算机组成原理 去吧
展开全部
一、流的概念和作用
学习Java IO流,我是真的有点无语啊。。。!相信很多学习Java的朋友在起初学习Java IO的时候都会觉得很简单,可是真正用的使用的时候又措手不及,这是一个比较正常的现象,这不能怪你,因为Java设计者在设计Java IO这个类库时,就已然注定了这样蛋疼的一个局面。Java IO的学习之难,主要有两点:其一是构建一个实例需要借助其他的一个或多个实例,其次是类多而杂。你需要以一种俯瞰的视角来对待Java IO,只要你了解了Java IO类库的层次关系,你就可以很好的使用它了,是不是很激动...^_^,下面让我们来看看流的概念:
流:是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称和抽象。即数据在两设备间的传输成为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
二、流的分类
根据处理数据类型的不同分:字符流和字节流
根据数据流向不同分为:输入流和输出流
三、字符流和字节流
字符流的由来:因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。
字节流和字符流的区别:
(1)读写单位不同:字节流以字节(8bit)为单位,字符流以字符(16bit)为单位,根据码表映射字符。
(2)处理对象不同:字节流能处理所有类型的数据(如:图片、音乐、视频等媒体介质),而字符流只能处理字符类型的数据。
(3)字节流在操作的时候本身是不会用到缓冲区的,是文件本身的直接操作的;而字符流在操作的时候是会用到缓冲区的,是通过缓冲区来操作文件。
建议:当我们在处理媒体介质时,请选择字节流;当我们在处理字符介质时,请选择字符流;当我们不明确操作的介质的类型时,请选择字节流。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-04-15
展开全部
一般来说音乐、图像、流媒体文件都用字节流来读,文本文件用字符流来读。IO操作的本质都是字节流,所以当你用字符流从io设备读写东西的时候就需要涉及到字符集编码,即你想用什么编码来解释那些读到的或者即将写出的字节。所以java中的字符流对象都会有Charset参数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-04-15
展开全部
字节流与字符流主要的区别是他们的的处理方式
字节流是最基本的,所有的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等 答案补充 字节流比较单纯,可以适用任何文件,
但经常要操作的是些文本,
用字符流则效率些
字符输入输出流会自动在内部完成字节流中字节的解码与编码,使用起来要方便一些(相比用字节输入输出流读取后或写入前自己完成字符的解码编码)。
字节流是最基本的,所有的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等 答案补充 字节流比较单纯,可以适用任何文件,
但经常要操作的是些文本,
用字符流则效率些
字符输入输出流会自动在内部完成字节流中字节的解码与编码,使用起来要方便一些(相比用字节输入输出流读取后或写入前自己完成字符的解码编码)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
字符流的存在是操作文本容易。
其余都用字节流。。。
望采纳!!!
其余都用字节流。。。
望采纳!!!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询