4,144
社区成员
答:还可以是文件、内存或网络等;将数据读入程序之中。
答:屏蔽了实际的I/O设备中处理数据的细节,使得输出输入独立于设备。
答:
1>二进制文件和文本文件的区别:
①能存储的数据类型不同:文本文件只能存储char型字符变量。二进制文件可以存储char/int/short/long/float……等变量类型;
②每条数据的长度不同:文本文件每条数据通常是固定长度的,以ASCII为例,每条数据(每个字符)都是1个字节。二进制文件每条数据不固定,如short占两个字节,int占四个字节,float占八个字节……;
③读取的软件不同:文本文件编辑器就可以读写,比如记事本、NotePad++、Vim等。二进制文件需要特别的解码器,比如bmp文件需要图像查看器、rmvb需要播放器等;
2>字节流和字符流之间的关系:
所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列。
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
3>为什么有的文本文件打开会乱码?怎么解决?
:因为字节流按字节读取,因为再遇到汉字这类一个字占两个字节的时候,可能会出现乱码现象,因此需要依靠字符流来解决
答:1>字符与字节之间的关系:
①字节的定义:字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位
②字符的定义:字符是指计算机中使用的文字和符号,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。
③二者关系:
ASCII码中:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。UTF-8编码中:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。
Unicode编码中:一个英文字符等于两个字节,一个中文(含繁体)等于两个字节。
符号:英文标点占一个字节;中文标点占两个字节。
举例:英文句号“.”占1个字节的大小;中文句号“。”占2个字节的大小。UTF-16编码中:一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。
UTF-32编码中:世界上任何字符的存储都需要4个字节
答:1>FileOutputStream文件流,BufferedOutputStream缓冲流,ObjectOutputStream字节流;
2>文本流是指在流中流动的数据是以字符的形式出现的。流中的每一个字符对应一个字节,用于存放对应的ASCII码值,因此文本流中的数据可以显示和打印出来,都是用户可以读懂的信息。二进制流中的字节将完全根据程序编写它们的形式写入到文件或者设备中,而且完全根据它们从文件或者设备读取的形式读入到程序中;
3>编码层次上有所不同,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等;二进制流是值编码
答:RandomAccessFile类;字节;RandomAccessFile类实现了DataInput、DataOutput两个接口,可以将byte数组转换成字符型。