美文网首页Java高级
Java IO体系学习笔记二(流式部分---字节流)

Java IO体系学习笔记二(流式部分---字节流)

作者: 初夏的雪 | 来源:发表于2020-06-12 13:32 被阅读0次

上一节回顾

今天我们以字节流作为主要学习的内容:

先来看看流式部分的类结构图:


IO流式部分.png

大家看一下上面的流式部分的类结构图,要熟记这张图。好,开始我们的今天学习的三部曲:

第一步:装饰模式

java的IO体系是基于装饰模式设计的,那么我们就需要先去了解装饰模式是个什么东东,然后有个这个基础去学习IO体系就快很多了,这里仅对装饰模式做简单的描述,后续会有相关的专题来白话设计模式。

装饰模式简单理解:定义一个抽象类构件,通过继承并实现抽象方法达到可以完成一些其他职责功能的对象构件,达到解耦、动态扩展的装饰效果。

装饰模式UML图

第二步:IO之InputStream 类结构

下面以InputStream为例来梳理IO类的继续关系思维导图:


InputStream类思维导图

说明:
1、InputStream 是一个抽象构件;ObjectInputStream、ByteArrayInputStream 、FileInputStream 是具体的装饰类;FilterInputStream 对抽象构件进行了封装;DataInputStream、BufferedInputStream、PushbackInputStream都是具体的装饰类;

2、在使用的时候Buffered是用来做缓存使用的;ObjectInputStream、ByteArrayInputStream 读写是必须成对出现的。并且ObjectInputStream中所写入的对象必须是序列化的;

读写流的类基本上是一一对应的,我们来看一下对应的关系图:


输入输出流的对应关系图

第三步:简单使用

从文件读取数据到内存中:

DataInputStream in = new DataInputStream(
                    new BufferedInputStream(
                            new FileInputStream(
                                    new File(filePath))));

将内存数据写入文件:

DataOutputStream out = new DataOutputStream(
                        new BufferedOutputStream(
                                new FileOutputStream(
                                        new File(filePath))));

用法剖析:

1、根据filePath 创建一个flie ,使用FileInputStram 即可将文件数据以字节流的方式读入到内存中;

2、BufferedInputStream 为了要用这个缓存区呢?
如果一个字节一个字节的读写磁盘,IO的压力巨大,使用Buffer缓存区后,读取了一堆数据后再进行读写,减少磁盘的读写,保护磁盘。

3、那又是为什么要使用DataInputStream呢?
为了实现与机器类型无关的Java基本类型的读写。

注意事项:

在使用字节流的时候如果你是使用Buffer缓存的字节流,那么在你使用完后,需要以此调用flush() 、close()方法来释放资源;
而其他的则仅仅需要调用close()即可。

字节流:就是一个字节一个字节的读写。以上的内容仅仅是简单的学习使用。

下节预告: 字符流

相关文章

  • Java IO体系学习笔记二(流式部分---字节流)

    上一节回顾 今天我们以字节流作为主要学习的内容: 先来看看流式部分的类结构图: 大家看一下上面的流式部分的类结构图...

  • java io

    参考Java IO学习笔记(一):File类Java IO学习笔记(二):RandomAccessFile类Jav...

  • Java IO流的使用

    下面部分内容是参考Oubo的博客——Java IO流学习总结 Java流操作有关的类或者接口: 字符流和字节流 字...

  • Java的IO & NIO

    IO流学习总结一Java IO,硬骨头也能变软二java IO体系的学习总结三Java IO面试题 NIO与AIO...

  • JAVA IO基本知识

    本部分总结一下JAVA IO的相关知识。 全部章节传送门: JAVA IO学习笔记: IO基本知识 JAVA IO...

  • Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-...

  • Java IO

    传统流式IO 传统的Java IO是流式的IO,从诸如类名InputStream和OutputStream中就可以...

  • java 复制图片

    在学习了java IO 的基本理论之后做如下总结:1、java的IO操作分为字节流和字符流两种方式。字节流可以传输...

  • JAVA基础系列(七) IO流

    IO流体系分字节流和字符流,里面又都分为输入输出流。下图展示了IO体系的框架图。粗体部分为本文涉及到的IO流。 本...

  • javaIO

    吃透Java IO:字节流、字符流、缓冲流 IO流是Java中的一个重要构成部分,也是我们经常打交道的。 下面几个...

网友评论

    本文标题:Java IO体系学习笔记二(流式部分---字节流)

    本文链接:https://www.haomeiwen.com/subject/lghmzhtx.html