java字节流,字符流问题怎么判断一个文件要用字节流还是用字符流

一看到二进制,字符集就头晕,一点都不懂 都不知道怎么问

有中文就用字符流,没中文可以用字节流,这个应该根据你具体情况而定,就是看这个文件里面内容的字符是什么样的,像中文就是一个字节放不下,需要用两个字节来存储,那么字符流一个字符一个字符的往里读,所以能读出来,你用字节流就不行了,一个字符一个字符的往里读,把一个汉字拆成一半了,到时候操作系统不认识,显示都问号,
一看到二进制你有啥不明白的,好多人都知道java里面1个字符等于2个字节,1个字节等于8位,像背顺口溜一样,其实啥意思都不知道,我都服了,1个字节等于8位,8位啥呀?2进制代码啊,也就是01序列,这个序列是8位数,中文比较大,得占16位,所以是2个字节。 答案补充 第三行打错字了,是:用字节流就不行了,一个字节一个字节的往里读 答案补充 谁拷贝答案了,哪些答案都是垃圾,没一个正确的,我拷贝它干什么,
内存的存储体上面分若干个存储单元,一个存储单元可以存储8位或者16为,或者32位的,或者....的01序列,一个字节等于8位,比如11111111,一个汉字在计算机内部要使用2个字节来存储,一个装不下,也就是16位的01,你用字节流读,一下读8位出来,还有8位给人家仍了那能行,么 答案补充 赶紧看 计算机组成原理 去吧
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-05
一、流的概念和作用
  学习Java IO流,我是真的有点无语啊。。。!相信很多学习Java的朋友在起初学习Java IO的时候都会觉得很简单,可是真正用的使用的时候又措手不及,这是一个比较正常的现象,这不能怪你,因为Java设计者在设计Java IO这个类库时,就已然注定了这样蛋疼的一个局面。Java IO的学习之难,主要有两点:其一是构建一个实例需要借助其他的一个或多个实例,其次是类多而杂。你需要以一种俯瞰的视角来对待Java IO,只要你了解了Java IO类库的层次关系,你就可以很好的使用它了,是不是很激动...^_^,下面让我们来看看流的概念:
  流:是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称和抽象。即数据在两设备间的传输成为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
二、流的分类
  根据处理数据类型的不同分:字符流和字节流
  根据数据流向不同分为:输入流和输出流
三、字符流和字节流
  字符流的由来:因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。
  字节流和字符流的区别:
  (1)读写单位不同:字节流以字节(8bit)为单位,字符流以字符(16bit)为单位,根据码表映射字符。
  (2)处理对象不同:字节流能处理所有类型的数据(如:图片、音乐、视频等媒体介质),而字符流只能处理字符类型的数据。
  (3)字节流在操作的时候本身是不会用到缓冲区的,是文件本身的直接操作的;而字符流在操作的时候是会用到缓冲区的,是通过缓冲区来操作文件。
  建议:当我们在处理媒体介质时,请选择字节流;当我们在处理字符介质时,请选择字符流;当我们不明确操作的介质的类型时,请选择字节流。

本回答被网友采纳
第2个回答  2013-04-15
一般来说音乐、图像、流媒体文件都用字节流来读,文本文件用字符流来读。IO操作的本质都是字节流,所以当你用字符流从io设备读写东西的时候就需要涉及到字符集编码,即你想用什么编码来解释那些读到的或者即将写出的字节。所以java中的字符流对象都会有Charset参数。
第3个回答  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等 答案补充 字节流比较单纯,可以适用任何文件,
但经常要操作的是些文本,
用字符流则效率些

字符输入输出流会自动在内部完成字节流中字节的解码与编码,使用起来要方便一些(相比用字节输入输出流读取后或写入前自己完成字符的解码编码)。
第4个回答  2013-04-15
字符流的存在是操作文本容易。
其余都用字节流。。。
望采纳!!!本回答被网友采纳

java字节流,字符流问题怎么判断一个文件要用字节流还是用字符流
有中文就用字符流,没中文可以用字节流,这个应该根据你具体情况而定,就是看这个文件里面内容的字符是什么样的,像中文就是一个字节放不下,需要用两个字节来存储,那么字符流一个字符一个字符的往里读,所以能读出来,你用字节流就不行了,一个字符一个字符的往里读,把一个汉字拆成一半了,到时...

Java字符流与字节流的区别
1. 字符流与字节流在处理数据的基本单元上存在差异。字符流以Unicode字符为处理单元,通常是两个字节,能够直接操作字符、字符数组或字符串。字节流则以单个字节为处理单元,操作字节和字节数组。2. 字符流能够更好地支持多国语言,因为它是由Java虚拟机将字节转化为Unicode字符而成的。对于涉及中文等文本...

Java字符流和字节流对文件操作的区别
Java字符流是处理字符(Char)对象用的,字节流是处理字节(Byte)对象用的。处理的目标对象不同,处理方法也就不一样了。字符流处理的基本单位是字符(Java中的字符是16位的),输入流以Reader为基础,输出流以Writer为基础;字节流的基本单位是字节(Java中的字节是8位的),输入流以 InputStream为基...

什么时候使用字节流什么时候使用字符流
总结而言,选择字节流还是字符流取决于数据类型和处理需求。字节流适合处理原始数据和音频、图片等非文本内容;而字符流则适用于文本处理,特别是包含多国语言和中文文本的场景。

请问在JAVA 的输入与输出流当中,什么时候该使用字符流?什么时候该使用...
如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点 所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列 1,字节...

字符流与字节流
字符流,则是按照字符(一个字符通常占用两个字节)来进行读写操作。它将二进制数据解码为字符,以方便处理文本信息,尤其是中文文本。字符流在处理纯文本数据时更为方便和直观。在处理文件时,字节流与字符流之间的主要区别体现在以下方面:字节流直接与文件交互,不依赖缓冲区,而字符流使用缓冲区来临时...

Java | 字节流与字符流的区别
在实际应用中,如果需要处理二进制数据或追求速度,应选择字节流;而处理文本数据时,字符流更为合适。Java提供InputStreamReader和OutputStreamWriter,用于在字节流和字符流之间转换。最后,无论是字节流还是字符流,选择哪种取决于具体的业务需求和性能要求。如果你对AI+编程实践感兴趣,可以浏览我的原创...

“字节流”与“字符流”有什么区别?
字节流与字符流主要的区别是他们的的处理方式字节流是最基本的,采用ASCII编码,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的但实际中很多的数据是文本,又提出了字符流的概念,采用Unicode编码.它是按虚拟机的encode来处理,也就是要进行字符集的转化这两个之间...

Java:理解Java中的字节流和字符流
Java中的流处理是通过流抽象来执行输入输出操作。流分为字节流和字符流两大类。字节流用于处理原始二进制数据,字符流则用于处理Unicode字符。在早期版本的Java中,只有字节流,字符流的概念在Java 1.1版本引入。流实质上是顺序信息的抽象,可链接到不同类型的设备如键盘、网络、磁盘等。字节流和字符流...

关于java流的问题,字节流与字符流,为什么要用转换流,把字节转换成字符流...
比如说System.in标准输入流。就是字节流。你想从他那里得到用户在键盘上的输入,只能是以转换流将它转换为Reader以方便自己的程序读取输入。再比如说Socket里的getInputStream()很明显只给你提供字节流,你要不行直接用,就得给他套个InputStreamReader()用来读取。网络传输来的字符。希望能够帮到你。

相似回答