第12讲-Java中的IO操作及对象的序列化与反序列化

1、知识点 1.1、课程回顾

第12讲-Java中的IO操作及对象的序列化与反序列化

 

 

 

1.2、本章重点

1.2.1  io操作

1.2.2  对象的序列化与反序列化

2、具体内容 2.1、Java IO 2.1.1、什么是IO

IO其实就是输入、输出

I  InputStream  输入流

O  OutputStream  输出流

  Java IO即Java输入输出系统。不管我们编写何种应用,都难免和各种输入输出相关的媒介打交道,其实和媒介进行IO的过程是十分复杂的,这要考虑的因素特别多,比如我们要考虑和哪种媒介进行IO(文件、控制台、网络),我们还要考虑具体和它们的通信方式(顺序、随机、二进制、按字符、按字、按行等等)。Java类库的设计者通过设计大量的类来攻克这些难题(Java设计者将复杂的IO操作封装成一个个方法,那么我们再去操作IO的时候,只需要调用他们写好的方法就可以了),这个类就位于java.io包中。

  在JDK1.4之后,为了提高Java IO的效率,Java又提供了一套新的IO,JavaNewIO简称JavaNIO。 

第12讲-Java中的IO操作及对象的序列化与反序列化

 

 

 2.1.3、IO分类

流:输入流  输出流

方式:字节流  字符流

IO具体的流

字节输入流InputStream、字节输出流OutputStream

字符输入流Reader、字符输出流Writer

我们如何来区分到底是输入还是输出:

读进来(reader in)  写出去(Writer Out)

第12讲-Java中的IO操作及对象的序列化与反序列化

 

 

 2.1.4、字节输出流(将Java中的内容 输出 到文件中)

第12讲-Java中的IO操作及对象的序列化与反序列化

 

 

2.1.4、字节输入流(将文本中的内容 读取到Java内存)

第12讲-Java中的IO操作及对象的序列化与反序列化

2.1.5、循环读取数据(模拟大文件读取)

第12讲-Java中的IO操作及对象的序列化与反序列化

 

 

 2.1.6、文件复制

第12讲-Java中的IO操作及对象的序列化与反序列化

 

 

 2.1.7、异常处理

A  我们不讲异常抛出 而是选择try-catch

第12讲-Java中的IO操作及对象的序列化与反序列化

 

 

 

 

 

 

B  我们发现 关闭资源的代码是写到try中,有可能出现异常,此时close()无法执行。所以 我们需要将close()关闭资源的代码写到finally中

C  我们发现将close放到finally中的时候out和in报错。因为in和out的作用域不够。所以我们需要提高in和out的作用域。将in和out的定义写到try外面,赋值写到try的里面。

第12讲-Java中的IO操作及对象的序列化与反序列化

 

 

 D  我们发现close()又报错了。这是因为close()也会出现异常--IOException。所以我们需要在finally中去处理close产生的异常

 

第12讲-Java中的IO操作及对象的序列化与反序列化

 

E  此时会出现一个隐藏的问题,就是当in和out如果为null的时候,此时执行close()代码会出现空指针异常。所以我们需要作非空判断

第12讲-Java中的IO操作及对象的序列化与反序列化

 

 

 F  当我们的out在关闭的时候,如果出现异常,此时in就无法正常关闭了。所以 我们需要先在关闭out在out的finally中再去关闭in

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwsxfw.html