简述Java IO

IO的分类
从数据传输方式或者说是运输方式角度看,可以将 IO 类分为:

1、字节流
2、字符流

字节流是以一个字节单位来运输的,比如一杯一杯的取水。而字符流是以多个字节来运输的,比如一桶一桶的取水,一桶水又可以分为几杯水。
字节流和字符流的区别:
字节流读取单个字节,字符流读取单个字符(一个字符根据编码的不同,对应的字节也不同,如 UTF-8 编码是 3 个字节,中文编码是 2 个字节。)字节流用来处理二进制文件(图片、MP3、视频文件),字符流用来处理文本文件(可以看做是特殊的二进制文件,使用了某种编码,人可以阅读)。简而言之,字节是个计算机看的,字符才是给人看的。

字节流和字符流的划分可以看下面这张图。
在这里插入图片描述
我们常用的也就是文件相关的几个类,如文件最基本的读写类 File 开头的、文件读写带缓冲区的类 Buffered 开头的类,对象序列化反序列化相关的类 Object 开头的类。

面试总结:

1.什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多少,各有什么区别

答案

Bit最小的二进制单位 ,是计算机的操作部分 取值0或者1
Byte是计算机操作数据的最小单位由8位bit组成 取值(-128-127)
Char是用户的可读写的最小单位,在Java里面由16位bit组成 取值(0-65535)

Bit 是最小单位 计算机 只能认识 0或者1

8个字节 是给计算机看的
字符 是看到的东西 一个字符=二个字节

2.什么是流,按照传输的单位,分成哪两种流,并且他们的父类叫什么流是指数据的传输

答案

字节流,字符流
字节流:InputStream OutputStream
字符流:Reader Writer

3.流按照传输的方向可以分为哪两种,分别举例说明

答案

输入输出相对于程序
输入流InputStream
,输出流OutputStream

4.按照实现功能分为哪两种,分别举例说明

答案

节点流,处理流
节点流:OutputStream
处理流: OutputStreamWriter

5.BufferedReader属于哪种流,它主要是用来做什么的,它里面有那些经典的方法

答案

属于处理流中的缓冲流,可以将读取的内容存在内存里面,有readLine()方法

6.怎么样把输出字节流转换成输出字符流,说出它的步骤

答案

使用 转换处理流OutputStreamWriter 可以将字节流转为字符流
New OutputStreamWriter(new FileOutputStream(File file));

7.把一个对象写入数据源或者从一个数据源读出来,用哪两个流

答案

ObjectInputStream ObjectOutputStream

8.什么叫对象序列化,什么是反序列化,实现对象序列化需要做哪些工作

答案

对象序列化,将对象以二进制的形式保存在硬盘上
反序列化;将二进制的文件转化为对象读取
实现serializable接口

不想让字段放在硬盘上就加transient

9.在实现序列化接口是时候一般要生成一个serialVersionUID字段,它叫做什么,一般有什么用

答案

是版本号,要保持版本号的一致 来进行序列化

为了防止序列化出错

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

答案

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

发布了109 篇原创文章 · 获赞 2 · 访问量 2896

猜你喜欢

转载自blog.csdn.net/baidu_41592938/article/details/104695304