A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1、缓冲流为什么会提高IO流读写的效率?
JVM建立缓冲流对象时,会同时建立一个缓冲区数组,读写时先将数据存入缓冲区数组,待其存满后再将数据返回,这样一来减少了内存和硬盘的IO次数,也即提高了读写的效率。

2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当文件的编码格式和解码格式不一致时会发生乱码问题,例如若一个文件编码时用的是GBK格式,而解码时采用的是utf8格式,则显示出来的就是乱码;
可以通过转换流InputStreamReader类和OutputStreamWriter类搭建字符和字节的桥梁,在创建这两个类的对象时指定编码的格式,即可正确的读写文件。

3、序列化流中的serialVersionUID的作用
若某个类的某些对象被序列化后,又对这个类进行了修改,则在反序列化的时候会重新计算序列版本号,前后的序列版本号不一致则反序列化时会抛出 InvalidClassException 异常。
因此在类中加入成员变量serialVersionUID,用static、final和long修饰,这样即使之后修改了类中的内容,序列版本号也不会被修改,因此可以顺利进行反序列化。

4、请根据自己的语言表述IO流的体系
IO流大体以两种划分方式为根本:输入与输出、字节与字符,两两组合成了4种流的根类,也即InputStream、OutputStream、Reader和Writer。在这4个根类之下,又因功能需求的不同,而分别有几个子类,如为解决IO的效率问题的类:缓冲流(BufferedInputStream等);为解决字符和字节转换问题的类:转换流(InputStreamReader、OutputStreamWriter);为解决对象序列化问题的类:ObjectInputStream;还有其他如过滤流(FilterInputStream等)、文件流(FileInputStream等)、管道流(PipedInputStream等)、音频流(AudioInputStream等)等。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马