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等)等。
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?

缓冲流在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。

2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?

当我们用idea直接将字符写入到电脑,在电脑直接打开时会发生乱码现象
乱码产出的原因是在写入写出的时候使用的编码表不一致导致的
在写入写出的时候我们可以通过字符转换流指定统一的编码表。

3、序列化流中的serialVersionUID的作用

Serializable 接口给需要序列化的类,提供了一个序列版本号serialVersionUID ,该版本号的目的在于验证序列化的对象和对应类是否版本匹配。

4、请根据自己的语言表述IO流的体系

IO流包括
四个基本流:字节输入流,字节输出流,字符输入流,字符输出流。
四个缓冲流:字节缓冲输入流,字节缓冲输出流,字符缓冲输入流,字符缓冲输出流。缓冲流是在基本流基础上提高效率
两个转换流:InputStreamReader,OutputStreamWriter  是字节流与字符流转换的桥梁
两个序列化流:ObjectInputStream,ObjectOutputStream
一个打印流:PrintStream
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
答:缓冲的在创建流对象的时候,会在内存创建一个内置默认大小的缓冲区数组,
通过缓冲区读写,减少系统IO次数,从而提高了读写的效率。

2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:我们的操作系统和IDEA使用的编码器是不同的,在读取相同的字符时,由于在不同的编码表中是用不同的二进制表示的,
使用的不是相同的编码表编码和解码的格式不一致就会发生乱码,我们可以使用转换流来解决编解码问题,就是让我们的字
节流可以是使用可变的编码集,输入自己需要转化的编码格式,即可进行转化。

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

4、请根据自己的语言表述IO流的体系
答:(1)IO流按照流动的方向,以内存为基准,分为输入流和输出流;格局数据的类型分为字节流和字符流。
    (2).IO流包括基本字节流,字符流:从字节流衍生而来,由于字节在读取中文时,只能读取中文字符的一部分,产生了字符流.
    (3)在这两个流的基础上加强的有:
        A.缓冲流:将两个流进行增强,提高读写的效率;
        B.转换流:由于在编码格式和解码格式不一致,出现乱码,需要指定对应编码的字符集和解码字符集,解决编码和解码格式不一致问题;
        C.序列化流:将对象封装再进行序列化成字节进行保存,反序列化时将字节转为对象展示,可以防止文本被修改问题;
        D.打印流:为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式.


回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
答:
        缓冲流会在内存创建一个默认大小的缓冲数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率;
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:
        产生情况:例如将默写数据按A规则进行存储,再按A规则进行解析,此时解析正常,但是如果按A规则存储,却按B规则进行解析,这个时候就会出现乱码问题;
        产生原因:编码和解码的方式不一致;
        解决方案:保证编解码的方式一致,即用转换流指定相同的编码表进行编解码;
3、序列化流中的serialVersionUID的作用
答:
        作用:指定类的序列号,令其保持不变;使得类的class文件发生改变后,再进行反序列化不会抛出序列化冲突异常;
4、请根据自己的语言表述IO流的体系
答:
        基本流:四种,字节输入输出流和字符流输入输出流;是对数据进行读写操作;
        高效流:四种,字节缓冲输入输出流和字符缓冲流输入输出流;是对基本流的增强,提高基本流的读写效率;
        转换流:两种,InputStreamReader类和OutputStreamWriter类;是字节流与字符流之间的转换流,能指定编码表进行编解码,防止出现乱码;
        序列流:两种,序列化流和反序列化流;是将对象保存为文件或将文件重构成对象的流;
        打印流:一种,PrintStream类;能够方便地打印各种数据类型的值;
回复 使用道具 举报
转换流 java.io.OutputStreamWriter ,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符
编码为字节。它的字符集可以由名称指定,也可以接受平台的默认字符集
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
答:缓冲流在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高续写的效率。

2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:当我们按照A规则存储,却按照B规则解析,就会导致乱码现象。比如IDEA的设置都是默认的UTF-8编码,但是当读取windows系统中创建的文本文件,由于windows系统的默认是GBK编码,就会出现乱码。

3、序列化流中的serialVersionUID的作用
答:因为序列化在进行反序列化的时候回进行校验,必须保证序列号一致才能反序列化,否则抛出异常,serialVersionUID的作用就是为了防止序列号冲突了。

4、请根据自己的语言表述IO流的体系
答:IO流根据数据的流向分为:输入流和输出流;又根据数据的类型分为:字节流和字符流。
    输入流 :把数据从其他设备上读取到内存中的;
    输出流 :把数据从内存中写出到其他设备上的;
    字节流 :以字节为单位,读写数据的;
    字符流 :以字符为单位,读写数据的;
缓冲流:高效续写的缓冲流,是对4个基本的 FileXxx 流的增强,一共4个流;缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
转换流:分为:(1)InputStreamReader是Reader的子类,是从字节流到字符流的桥梁
              (2)OutputStreamWriter是Writer的子类,是从字符流到字节流的桥梁。
序列化流:用一个字节序列可以表示一个对象,该字节序列包含该 对象的数据,对象的类型和对象中存储的属性 等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。反之该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。
打印流:使用指定的文件名创建一个新的打印;该类能够方便地打印各种数据类型的值,是一种便捷的输出方式。
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
答:缓冲流在创建对象时,会内置一个默认大小的缓冲区数组,通过缓冲区读写,缓冲区与内存之减的读写速度非常快,减少系统IO次数,从而提高读写的效率。

2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:编码与解码不同时就会出现乱码问题。当我们用GBK格式的文件通过FileReader对文件进行读写,FileReader查询IDE默认码表UTF-8,发现两者的码表格式不同就产生了乱码。使得编码与解码相同就不会出现乱码问题。
       
3、序列化流中的serialVersionUID的作用
答:当我们对某个类进行序列化后,又对其修改了数据,然后并未重新对这个类进行序列化,之间进行反序列化,导致class的序列号和文本的序列号不同,抛出异常而序列号的作用是给要序列化的流做个标记,我们可以通过final修饰serialVersionUID将这个序列号固定为常量就不会产生异常问题

4、请根据自己的语言表述IO流的体系
答:
IO流分为:字节输入输出流、字符输入输出流4种类型。即InputStream、OutputStream、Reader和Writer。因不同的需求在基本流上又设置了缓冲流、转换流、序列化流和打印流
缓冲流:为提高读写效率
转换流:由于不同的编解码会产生乱码,而转换流可以指定编码的字符集和解码的字符集
序列化流:序列化可以将对象转化为文件进行永久性存储,反序列化可以将文件恢复成对象
回复 使用道具 举报
、缓冲流为什么会提高IO流读写的效率?
因为缓冲流在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。

2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当数据所编码的对应的编码表与解码所用的编码表不同时会发生乱码。
是由于编码和解码所使用的编码表不同而产生的
通过转换流进行解决

3、序列化流中的serialVersionUID的作用
用于解决当类的class文件中的数据发生改动时,反序列化时抛出的文件序列号对应不上的异常

4、请根据自己的语言表述IO流的体系
按照传输方向不同分为输入流和输出流,按照操作数据的不同分为字符流和字节流,InputStream和OutputStream是字节流的顶级父类,Writer和Reader是字符流的顶级父类。根据功能的不同,其子类又分为文件流、缓冲流、转换流、序列化流、打印流等。主要是进行文件和数据传输的。
回复 使用道具 举报

李伟斌

1、缓冲流为什么会提高IO流读写的效率?
答:因为在内存中建立了缓冲数据,减少IO次数,提高效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:编码和解码的标准不一致的时候,会发生乱码。解决方案是统一编码和解码的标准。
3、序列化流中的serialVersionUID的作用
答:serialVersionUID在于验证序列化的对象和对应类是否版本匹配。
4、请根据自己的语言表述IO流的体系
答:IO流从反向上分输入流和输出流两种,从大小上分为字节流和字符流两种。
回复 使用道具 举报
陈开明:
1、缓冲流为什么会提高IO流读写的效率?
因为缓冲流是在创建流对象时候,会在内存中新建了一个默认大小的缓存数组,通过缓冲区数组,内存与内存之间的读写速度远远快于内存与其他设备的读写速度,能有效减少系统IO读写次数,提高效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当编码和解码使用不是同一套编解码规则时候,会发生乱码问题。
使用转换流来解决。java.io.InputStreamReader是从字节流到字符流的桥梁。它读取字节,并使用指定
的字符集将其解码为字符。它的字符集可以由名称指定,也可以接受平台的默认字符集。
java.io.OutputStreamWriter ,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符
编码为字节。它的字符集可以由名称指定,也可以接受平台的默认字符集。
3、序列化流中的serialVersionUID的作用
serialVersionUID 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。
4、请根据自己的语言表述IO流的体系
IO流分为输入流(InputStream,Read)和输出流(OutputStream,Write)两类。
InputStream是字节输入流的父类。包括FileInputStream,BufferedInputStream子类
OutputStream是字节输入流的父类。包括FileOutputStream,BufferedOutputStream子类
Read是字符输入流的父类。包括FileReader,BufferedRead,InputStreamReader子类
Write是字符输出流的父类。包括FileWriter,BufferedWriter,OutputStreamWriter子类
回复 使用道具 举报


1、缓冲流为什么会提高IO流读写的效率?
缓冲流在创建时,会内置一个缓冲区来减小实际读写系统IO的次数从而加速读写操作的速度提高效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当编码和解码过程使用的编码表和字符集不一致的时候,就会发生乱码问题(最常见的情况是中文版Windows默认使用GBK编码的文件被IDEA直接以UTF-8去试图打开的时候)。在Java中解决乱码问题,可以在进行IO操作时候使用转换流,将字节流转换为使用制定编码进行访问的字符流,或者把字符流按照制定编码转化为字节流。
3、请根据自己的语言表述IO流的体系
IO流是Java中对于系统IO资源的访问方式。
IO流以字节流为基础。根据流向(输入还是输出)分为输入流(数组从外部到内存)和输出流(从内存输出到外部)。
为了方便对文本、字符等进行操作,于是乎在以字节流为基础,在结合编码表的情况下,通过转换流而形成了字符流使得对文本的操作更加直观。
为了提升IO操作的效率和速度,又引入了缓冲流,从而大幅度的提高了读写操作的效率。
为了更加方便的进行输出操作,于是又引入了打印流,专门用于把各种数据类型的数据打印输出到流中。
而开发中,为了能把对象永久保存或者实现其网络发送(预习时候看到TCP协议通信在Java也是使用字节流来实现),又引入了序列化流和反序列化流,可以把对象转化成字节序列通过字符流保存起来或者把字节序列还原成对象。
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
答:内存间读写数据的速度比从硬盘中读写数据的速度快很多,缓冲流通过内存中内置默认大小(8192)的缓冲区数组接收硬盘中的数据,通过缓冲区读写减少系统的IO次数,所以提高了IO读写效率。

2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:读写过程中,编码和解码的标准不同会发生写入乱码的问题。通过统一编码和解码的标准可以解决乱码问题。例如windows记事本默认用GBK编码,通过记事本写的文字用默认UTF-8解码的IDEA打开是乱码,可以通过InputStreamReader方法指定GBK字符集解码,从而避免乱码。

3、序列化流中的serialVersionUID的作用
答:Serializable 接口给需要序列化的类,提供了一个序列版本号serialVersionUID,目的在于验证序列化的对象和对应类是否版本匹配。如果对类进行和修改,那么其序列标本号也会发生修改。可通过在类中写死序列版本号,使修改后的类依然能够匹配序列化的对象。

4、请根据自己的语言表述IO流的体系
答:IO流的顶层有两种分类方式,按类型可分为【字节流】和【字符流】,按流向可分为【输入流】和【输出流】。
两两组合后可产生IO流的4个【顶层接口】:
字节输出流【OutputStream】(常用有close、flush、write(byte[])方法);
字节输入流【InputStream】(常用有close、read(byte[])方法);
字符输出流【Writer】(常用有close、flush、write(char[])方法);
字符输入流【Reader】(常用有close、read(char[])方法);
【顶层接口的子类体系】:
①【文件流】:【File】+【顶层接口】
(FileOutputStream\FileInputStream\FileWriter\FileReader)
· 构造方法传入的参数为File对象或文件名

②【缓冲流】:【Buffered】+【顶层接口】
(BufferedOutputStream\BufferedInputStream\BufferedWriter\BufferedReader)
· 构造方法传入的参数一般为文件流,可以大幅提高读写效率。
· 特有方法:BufferedReader: public String readLine() : 读一行文字。
BufferedWriter: public void newLine() : 写一行行分隔符,由系统属性定义符号。

③【转换流】:【顶层字节流】+【顶层字符流】
(OutputStreamWriter\InputStreamReader)
· 属于【字符流】的子类,是沟通字节流和字符流的桥梁,构造方法传入的参数一般为字节流的文件流。
· 特有方法:可以在构造方法的参数中指定读写的字符集。

④【序列化】:【Object】+【顶层字节流】
(ObjectOutputStream\ObjectInputStream)
· 属于【字节流】的子类,是【内存中对象的数据】与【硬盘中文件里的数据】转换的桥梁,构造方法传入的参数一般为字节流的文件流。
· 特有方法:ObjectOutputStream:public final void writeObject (Object obj) : 将指定的对象写出。
ObjectInputStream:public final Object readObject () : 读取一个对象。

⑤【打印流】:(PrintStream)
· 属于字节输出流【OutputStream】的子类,可以改变打印流向。

其他:
还有一个【Properties】类,继承于【Hashtable】,虽然不属于【IO】类,但是是双列集合和数据文件之间转换的桥梁。
IO相关特有方法:public void load(InputStream in):从字节输入流中读取键值对,生成Properties集合。
public void store(OutputStream out,String comments):从Properties集合中获取键值对,输出到字节输出流的文件中。
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
缓冲流会在内存中创建一个缓冲区,将数据传入缓冲区,缓冲区直接和内存读写速度更快,从而减少IO次数,提高读写的效率。

2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
在编码不一致的时候会产生乱码问题。
怎样产生:当我们读取一个系统文件的时候,文件的编码和编译器默认的编码不一致的时候,就会产生写入乱码问题。
解决:通过转换流将文件的编码转换成和编译器默认的编码一致进行读写。


3、序列化流中的serialVersionUID的作用
序列化流中在将一个对象序列化到文件的的时候都会产生一个serialVersionUID码,给对象进行一个标记,对象在序列化后发生改变,则serialVersionUID码也会发生改变。在反序列化的时候serialVersionUID码必须一致,否则编译器会抛 InvalidClassException 异常。可以在创建对象的时候,固定serialVersionUID码,让它不会因为.class修改发生改变。

4、请根据自己的语言表述IO流的体系
IO流包括基本IO流和高效流、转化流、序列化、打印流
基本IO流有:字节输入输出流、字符输入输出流;
高效流也称缓冲流:也有字节、字符的输入输出流;缓冲流 BufferedOutputStream和BUfferedInputStream
转化流:有两个InputStreamReader(读取字节 解码为字符)和OutputStreamWriter(写出字符 ,编码为字节),编码解码时用
序列化:当想对对象进行IO流存储时用到的ObjectOutputStream和ObjectInputStream    序列化想要读取回来要用到反序列化
打印流:对输出流的包装
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
因为缓冲流在创建的时候会在内存中创建一个数组缓冲区;
通过缓冲读写就会减少系统读写IO次数这样就会提高读写的效率;

2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
读写过程中当读取的文本文件编码格式跟写入的编码格式不一致时就会发生写入乱码;
产生:两个编码之间不同的文本文件不能直接读写,各自编码表自己的编码字节不同方式不同,直接读写会产生乱码;
比如UFT-8字符是用一到四个字节 GBK字符为两个字节,当发生转换时计算机无法互相转换不同字节方式的编码;
解决:有两个桥梁让字节流和字符流之间可以转换编码;
①一个InputStreamReader是从字节流到字符流的桥梁:读取字节,并使用指定的字符集将其解码
②一个OutputStreamWriter是从字符流到字节流的桥梁:使用指定的字符集将字符编码为字节

3、序列化流中的serialVersionUID的作用
serialVersionUID的作用:在序列化对象之后发生了修改,那么会新生成一个对象class文件,反序列化时这类的序列版本号就会跟流中读取的类的版本号不匹配,这样就会抛出异常,Serializable接口标记了该类,提供了一个序列版本号。然后serialVersionUID来验证序列号是否匹配

4、请根据自己的语言表述IO流的体系
IO流总共可以分成两类:字节与字符流、输入与输出流。下方又有四个基本流:
InputStream字节输入流、OutputStream字节输出流、Reader字符输入流、Writer字符输出流
四个基本流下方有几个子类:
缓冲流:是用来提高效率;有字节缓冲流:BufferedInputStream 、BufferedOutputStream 字符缓冲流: BufferedReader , BufferedWriter
转换流: 实现不同的编码表之间内容的转换;InputStreamReader类:从字节流到字符流  OutputStreamWriter类:从字符流到字节流
序列化流:对象和文件之间转换;ObjectInputStream 序列化流  ObjectInputStream 反序列化流
打印流:能够方便地打印各种数据类型的值是一个便捷的输出方式;PrintStream类
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
因为缓冲流会在缓冲区创建一个数组,将数据存入 一次性读取或写出从而节省时间
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
读取编码为gbk的文件时会出现乱码问题,在读写时指定读写的编码方式
3、序列化流中的serialVersionUID的作用
将序列号写死,解决了更改类的内容时导致反序列报错的问题
4、请根据自己的语言表述IO流的体系
IO中按数据传输方向分为输入流与输出流,根据数据类型分为字符流与字节流从而有字节输入流、字节输出流、字符输入流、字符输出流。
缓冲流是将上述四种流强化,会有更快的传输速度
转换流是字符与字节的转换桥梁,解决的编码乱码的问题
序列化流将一个对象内容持久化到文件中
反序列化流将序列化内容恢复为对象
打印流能够方便打印各种数据类型
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
答:因为缓冲流在创建对象流时,会创建一个默认长度的缓冲区数组,通过缓冲区读写,减少访问系统的次数,从而提高IO流的读写效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:当读和写操作中字符的编码格式不同时,会出现写入乱码问题,通过转换流解决,指定对应的编码格式和解码格式,通过InputStreamReader/OutputStreamWriter的构造方法让他们的编码集相同,就可以够解决乱码问题。
3、序列化流中的serialVersionUID的作用
答:用来固定序列号,防止因修改.class文件发生序列化改变,反序列化时抛出InvalidClassException异常
4、请根据自己的语言表述IO流的体系
答:按照格局分IO流可分为字节流和字符流
按照流向分IO流可分为输入流和输出流
在此基础上,又因不同的需求可以分为不同的流:字节流、字符流、缓冲流、转换流、打印流、序列化流等。这些流都继承了各自父类Reader/Writer的成员方法,其中缓冲流中的BufferedReader、和BufferedWriter拥有自己特有的成员方法readLine()和nextLine(),打印流拥有自己特有的方法println()和print()。缓冲流的作用是增强流的读写速度,转换流的存在是为了实现不同的编码表之间内容的转换。转换流:用于解决编码和解码过程中因为格式不一致出现的乱码问题,通过指定相应的编码格式,解决乱码问题。序列化流中用一个字节序列表示一个对象,用于存储对象信息,另一种创建对象的方式。
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
答:因为缓冲流在创建对象流时,会创建一个默认长度的缓冲区数组,通过缓冲区读写,减少访问系统的次数,从而提高IO流的读写效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:当读和写操作中字符的编码格式不同时,会出现写入乱码问题,通过转换流解决,指定对应的编码格式和解码格式,通过InputStreamReader/OutputStreamWriter的构造方法让他们的编码集相同,就可以够解决乱码问题。
3、序列化流中的serialVersionUID的作用
答:用来固定序列号,防止因修改.class文件发生序列化改变,反序列化时抛出InvalidClassException异常
4、请根据自己的语言表述IO流的体系
答:按照格局分IO流可分为字节流和字符流
按照流向分IO流可分为输入流和输出流
在此基础上,又因不同的需求可以分为不同的流:字节流、字符流、缓冲流、转换流、打印流、序列化流等。这些流都继承了各自父类Reader/Writer的成员方法,其中缓冲流中的BufferedReader、和BufferedWriter拥有自己特有的成员方法readLine()和nextLine(),打印流拥有自己特有的方法println()和print()。缓冲流的作用是增强流的读写速度,转换流的存在是为了实现不同的编码表之间内容的转换。转换流:用于解决编码和解码过程中因为格式不一致出现的乱码问题,通过指定相应的编码格式,解决乱码问题。序列化流中用一个字节序列表示一个对象,用于存储对象信息,另一种创建对象的方式。
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?

因为缓冲流里面有一个缓冲区数组,每次读写数据的时候都会先把数据先保存在缓冲区数组里,然后再进行返回.一次返回一个数组,比一次返回几个字节的方式快,读写效率也更高.

2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?

(1.)在编码和解码的方式不一致的时候会发生乱码.

(2.)当读取Windows系统中创建的文本文件时,由于Windows系统的默认是GBK编码,使用IDEA默认编码格式UTF-8读取文件时就会出现乱码.

解决:保证编码和解码的字符集方式保持一致就不会出现乱码

3、序列化流中的serialVersionUID的作用

作用:保证序列号唯一,不会被覆盖更改

4、请根据自己的语言表述IO流的体系

IO流分为两个方向:类型和流向

1.类型又分为:字节流和字符流

流向又分为:字节输入流和字节输出流;字符输入流和字符输出流

2.我们无论使用什么样的流对象,底层传输的始终是二进制数据.所以字节流可以处理任何数据类型的文件.字符流只可以处理文本类型的文件.

3.字节流和字符流有各自的增强功能在读取的时候能够使用更加高效的缓冲流作为流对象传输,读写速度更快.

又有可以转换编码格式的转换流,解决出现乱码的问题.

4.序列化流和反序列化流,可以在文本和对象中来回读写.

序列化流可以将对象作为文件持久化存储.

反序列化流可以将文本文件重构成为一个对象,进行读取.
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
答:
缓冲流又称高效流,我们在读写数据时会在内存中创建缓冲区,通过缓存区读写,减少了系统IO的次数,提高了效率

2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:
使用的字符集不一样导致的乱码,使用转换流可以按指定的编码方式来读写,

3、序列化流中的serialVersionUID的作用
答:
生成序列化号,校验序列化对象和反序列化是否匹配。
类在被序列化后会自动生成序列号,如果类的内容被修改那么会重新再生成一个新的序列号,
我们在反序列化操作时会进行校验,必须要保证序列号一样才会反序列化,否则会报异常。

4、请根据自己的语言表述IO流的体系
IO流是数据间的流动,分为输入流和输出流

输入流是把其他设备中的数据读取到内存中

输出流是把内存中的数据写出到其它设备中

基本流有:字节输出流(OutputStream)字节输入流(InputStream)
          字符输出流(Reafer)            字符输入流(Writer)
       
缓冲流有:字节输出缓冲流(BufferedOutputStream)字节输入缓冲流(BufferedInputStream)
          字符输出缓冲流(BufferedReafer)        字符输入缓冲流(BufferedWriter)

转换流有:输出转换流(OutputStreamReafer)        输入转换流(InputStreamWriter)

序列化流有:序列化流(ObjectOutputStream)      反序列化(ObjectInputStream)

打印流:PrintStream
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写效率

2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
发生乱码:当编码规则和解码规则不一致时,产生乱码
解决方法:保证编码规则和解码规则一致

3、序列化流中的serialVersionUID的作用
用于验证序列化的对象和对应类是否版本匹配

4、请根据自己的语言表述IO流的体系
从基础流分为输入流和输出流
输入流:字节输入流,字符输入流
输出流:字节输出流,字符输出流
在基础流之上创建了缓冲流,转换流,序列化流,打印流
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马