java基础面试题八File类与IO流

目录

1. 谈谈Java IO里面的常用类,字节流,字符流

2. Java 中有几种类型的流?JDK为每种类型的流提供一些抽象类以供继承,请说出他们分别是哪些类?

3. 流一般需不需要关闭?如果关闭的话用什么方法?处理流是怎么关闭的?

4. OutputStream里面的write()是什么意思?

5. BufferedReader属于哪种流?他主要是用来做什么的?

6. 什么是缓冲区?有什么作用?

7. 字节流和字符流是什么?怎么转换?

8. 什么是Java序列化,如何实现

9. Java有些类中为什么需要实现Serializable接口?


1. 谈谈Java IO里面的常用类,字节流,字符流

  • 字节流(如 FileInputStream 和 FileOutputStream)用于处理原始二进制数据。
  • 字符流(如 FileReader 和 FileWriter)用于处理文本数据,并考虑字符编码问题。
  • 使用缓冲流(如 BufferedReader)可以提高性能。

通过合理选择字节流或字符流,可以高效地处理不同类型的数据。

2. Java 中有几种类型的流?JDK为每种类型的流提供一些抽象类以供继承,请说出他们分别是哪些类?

字节流

字节流用于处理二进制数据,例如图像、音频和视频文件。它们以字节为单位读取和写入数据。

抽象类:

  • InputStream: 字节输入流的抽象类,用于从各种来源读取字节。
  • OutputStream: 字节输出流的抽象类,用于将字节写入各种目标。

字符流

字符流用于处理文本数据,例如字符串和字符数组。它们以字符为单位读取和写入数据。

抽象类:

  • Reader: 字符输入流的抽象类,用于从各种来源读取字符。
  • Writer: 字符输出流的抽象类,用于将字符写入各种目标。

JDK 提供的抽象类

Java 的 java.io 包提供了上述四个抽象类,它们是所有流类的基础。这些抽象类定义了用于读取和写入数据的通用方法,例如 read() 和 write()

其他流类:

除了这四个抽象类,JDK 还提供了许多其他流类,用于处理特定类型的输入或输出。例如:

  • FileInputStream: 从文件读取字节。
  • FileOutputStream: 将字节写入文件。
  • InputStreamReader: 将字节流转换为字符流。
  • OutputStreamWriter: 将字符流转换为字节流。
  • BufferedReader: 提供缓冲功能,提高字符输入流的读取效率。
  • BufferedWriter: 提供缓冲功能,提高字符输出流的写入效率。

3. 流一般需不需要关闭?如果关闭的话用什么方法?处理流是怎么关闭的?

需要。close()

处理流在关闭过程中,也会关闭内部的流。

4. OutputStream里面的write()是什么意思?

数据写出的意思。

5. BufferedReader属于哪种流?他主要是用来做什么的?

BufferedReader 属于 处理流 中的 缓冲流。它主要用于 提高字符输入流的读取效率

具体来说,BufferedReader 的作用如下:

  • 缓存读取数据: BufferedReader 会将读取到的字符数据缓存到内存中,这样在多次读取相同数据时,可以从缓存中直接获取,避免重复读取原始输入流,从而提高读取效率。
  • 提供高效的读取方法: BufferedReader 提供了 readLine() 方法,可以一次性读取一行文本数据,而不用逐个字符读取,这在处理文本文件时非常方便。
  • 简化字符流操作: BufferedReader 继承了 Reader 类,因此可以使用 Reader 类中定义的 read() 方法,以及其他一些用于字符读取的方法。

6. 什么是缓冲区?有什么作用?

内部提供了一个数组,将读取或要写出的数据,现在此数组中缓存。达到一定程度时,集中性的写出。

作用:减少与磁盘的交互,进而提升读写效率。

7. 字节流和字符流是什么?怎么转换?

8. 什么是Java序列化,如何实现

对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,
或通过网络将这种二进制流传输到另一个网络节点。//当其它程序获取了这种二进制流,就可以恢复成原来的Java对象。

9. Java有些类中为什么需要实现Serializable接口?

便于此类的对象实现序列化操作。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值