java 面向对象编程--第17章 I/O系统

时间:2021-03-04 16:09:14

1、I/O操作指的是输入和输出流的操作。相对内存而言,当我们从数据源中将数据读取到内存中,就是输入流,也叫读取流。当我们将内存中处理好的数据写入数据源,就是输出流,也叫写入流。

2、流按照内容分类:字节流、字符流、对象流。

其实真正的流只有一种:字节流。数据的传输在底层都是以二进制方式传输,所以无论哪种流,都是字节流。字符流和对象流是在字节流基础上做了一层封装,以方便对字符数据和对象数据进行操作。

3、所有字节流的父类:InputStream和OutputStream。

所有字符流的父类:Reader和Writer

4、流操作的步骤:

建立流:建立内存和数据源之间传输数据的通道;

操作流:操作传输的数据;

关闭流:关闭内存和数据源之间的通道,释放资源。

5、当操作文件流时,如果文件不存在,读取流会抛出FileNotFoundException,写入流会创建新文件,但前提是该文件所在目录必须存在。如果目录不存在,同样会抛出FileNotFoundException。

6、流使用完毕后,必须关闭。如果不关闭,浪费内存资源,另外,写入流有可能写不进数据。

7、File 文件类:

  • getName(),获得文件名;
  • getParent(),获得文件目录;
  • getAbsolutePath(),获得文件绝对路径;
  • exists(),判断文件是否存在;
  • isFile(),判断对象是否是文件;
  • isDirectory(),判断对象是否是目录;
  • listFiles(),获得一个目录中所有的文件列表,包含文件和目录,但不包括子目录中的内容;
  • delete(),删除文件或目录(删除目录时),必须保证目录为空目录。
  • mkdir(),创建指定路径的目录

8、递归:在一个方法中调用同一个方法。

9、对象序列化:当需要对对象进行数据传输时,由于对象中的数据比较庞大,所以在传输对象前需要将对象打散成字节序列,以方便传输。这个过程,称为对象序列化。到达目的地后,又需要将字节序列还原成对象,这个过程叫反序列化。