WHCSRL 技术网

IO流和各种流带IO流模块的几个面试题

一:IO流的概述及File类

IO流的概述和分类:

  1. 按照数据的流向
    输入流:读数据
    输出流:写数据
  2. 按照数据类型来分
    字节流:
    字节输入流;字节输出流
    字符流:
    字符输入流;字符输出流
    一般来说,我们说IO流是按照数据类型来分的
  3. 那么者两种流在什么情况下使用呢?
    如果数据通过Window自带的记事本软件打开,我们还可以读懂里面的内容,就使用字符流。否则使用字节流。如果你不知道该使用哪种类型的流,就是用字节流。

1:File类

  1. File类的概述和构造方法
    在这里插入图片描述

  2. File创建功能
    在这里插入图片描述

  3. File类判断和获取功能
    在这里插入图片描述

  4. File类删除功能
    在这里插入图片描述

  5. 递归(补充)
    在这里插入图片描述

二:流的介绍及面试题

1:字节流

  1. 字节流写数据
    在这里插入图片描述

  2. 字节流写数据的3种方式
    在这里插入图片描述

  3. 字节流写数据的两个小问题
    在这里插入图片描述

  4. 字节流写数据加异常处理
    在这里插入图片描述

  5. 字节流读数据(一次读一个字节数据)
    在这里插入图片描述

  6. 字节流读数据(一次读一个字节数组数据)
    在这里插入图片描述

  7. 字节缓冲流
    在这里插入图片描述
    在这里插入图片描述

2:字符流

  1. 为什么会出现字符流
    在这里插入图片描述

  2. 基础知识
    在这里插入图片描述

  3. 编码表
    在这里插入图片描述

  4. 字符串中常见的编码解码问题
    在这里插入图片描述

  5. 字符流中编码解码问题
    在这里插入图片描述

  6. 字符流写数据的5种方式
    在这里插入图片描述

  7. 字符流读数据的2种方式
    在这里插入图片描述

  8. 字符缓冲流
    在这里插入图片描述

  9. 字符缓冲流特有功能
    在这里插入图片描述

3:复制文件异常处理

在这里插入图片描述

4: 特殊操作流

  1. 标准输入输出流
    在这里插入图片描述
    在这里插入图片描述

  2. 打印流
    在这里插入图片描述

  3. 对象序列化流
    在这里插入图片描述

  4. 对象反序列化流
    在这里插入图片描述

  5. 对象序列化遇到的问题及解决
    在这里插入图片描述

  6. Properties作为Map集合的使用(补充)
    在这里插入图片描述
    Properties作为Map集合的特有方法
    在这里插入图片描述
    Properties和IO流相结合的方法
    在这里插入图片描述

5:补充IO流面试题

  1. 字节流和字符流哪个好?怎么选择?
    1。大多数情况下使用字节流会更好,因为大多数时候 IO 操作都是直接操作磁盘文件,所以这些流在传输时都是以字节的方式进行的(图片等都是按字节存储的)
    2.如果对于操作需要通过 IO 在内存中频繁处理字符串的情况使用字符流会好些,因为字符流具备缓冲区,提高了性能

  2. 什么是缓冲区?有什么作用?
    1.缓冲区就是一段特殊的内存区域,很多情况下当程序需要频繁地操作一个资源(如文件或数据库)则性能会很低,所以为了提升性能就可以将一部分数据暂时读写到缓存区,以后直接从此区域中读写数据即可,这样就显著提升了性。
    2.对于 Java 字符流的操作都是在缓冲区操作的,所以如果我们想在字符流操作中主动将缓冲区刷新到文件则可以使用 flush() 方法操作。

  3. BufferedReader属于哪种流,它主要是用来做什么的,它里面有那些经典的方法?
    属于处理流中的缓冲流,可以将读取的内容存在内存里面,有readLine()方法,它,用来读取一行

  4. 流一般需要不需要关闭,如果关闭的话在用什么方法,一般要在那个代码块里面关闭比较好,处理流是怎么关闭的,如果有多个流互相调用传入是怎么关闭的?

    1.流一旦打开就必须关闭,使用close方法
    2.放入finally语句块中(finally 语句一定会执行)
    3.调用的处理流就关闭处理流
    4.多个流互相调用只关闭最外层的流

  5. OutputStream里面的write()是什么意思,write(byte b[], int off, int len)这个方法里面的三个参数分别是什么意思?
    1.write将指定字节传入数据源
    2.Byte b[ ]是byte数组
    3.b[off]是传入的第一个字符、b[off+len-1]是传入的最后的一个字符 、len是实际长度
    在这里插入图片描述
    小结:今天博主的分享就到此结束啦,谢谢各位小伙伴的光顾!

推荐阅读