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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1、缓冲流为什么会提高IO流读写的效率?
      缓冲流是在创建流对象时,会创建一个内置的默认大小的缓冲区数组(8192),通过缓冲区读写,减少系统和我们程序交换的次数,从而提高读写的效率.
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
      如果文件是用操作系统默认的GBK来进行编码的,那么写入IDEA中会发生乱码问题.应为系统的编码是GBK的,而JBK默认是2个字节保存一个中文,然是在IDEA中,使用的是UTF-8编码,他是使用3个字节保存一个中文,所以在IDEA中打开GBK编码的文字会出现乱码.使用InputStreamReader类和使用OutputStreamReader类 在InputStreamReader类中的构造方法中可以指定编码去解码我们所需要写入的字符.而OutputStreamReader类中的构造方法也能使用指定的编码写出.
3、序列化流中的serialVersionUID的作用
      serialVersionUID的作用是当我们序列化对象时,会给类的class文件生成一个序列号,当我们反序列化时,会比较class文件的序列号和类的序列号,如果序列号不匹配,那么会报出一个异常.我们可以使用Static  final关键字自己定义一个序列号,这样当我们改变类时,也能反序列化成功.
4、请根据自己的语言表述IO流的体系
根据流向可以分为输入流和输出流
       输入流:就是把数据从其他设备中读取到内存中
       输出流:就是把数据从内存中写入到其他设备上
根据数据类型可以分为字符流和字节流
       字符流:以字符为单位读写数据
       字节流:以字节为单位读写数据
字符流的顶级父类是:
Reader:
FileReader继承Reader类,他是将文件读入到内存中,可以读中文
BufferedReader继承Reader类,BufferedReader为字符输入流提供一个一个默认大小的缓冲区,一次读取一个缓冲区里面的内容,缓冲区的默认大小是8192.
Writer:
FileWriter继承Reader类,他是将字符写出到文件中,他也可以写中文
BufferedWriter继承Writer类,BufferedWriter为字符输出流提供一个一个默认大小的缓冲区,一次写一个缓冲区里面的内容,缓冲区的默认大小是8192.
   
字节流的顶级父类是:(不能读取和写出中文,否则会乱码)
InputStream:
FileInputStream继承InputStream类,是将文件读入到内存中,
BufferedInputStream继承FileInputStream类,BufferedInputStream为字符输入流提供一个一个默认大小的缓冲区,一次读取一个缓冲区里面的内容,缓冲区的默认大小是8192.
OutputStream:
FileOutoutStream类继承OutputStream类,是用于将数据写出到文件.当创建一个流对象时,必须要传入一个文件路径,如果没有这个文件,那么会创建该文件,有该文件会清空文件中的数据,如果要启用续写功能则需要在文件路径后面加上true,这样是不会清空文件原有的内容
BufferedOutputStream类继承FileOutoutStream,BufferedOutputStream为字符输出流提供一个一个默认大小的缓冲区,一次写一个缓冲区里面的内容,缓冲区的默认大小是8192.




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