1. Map:

    a. 存储的是键值对,每一个键对应一个值

    b. 键要求唯一;如果键重复,则值会覆盖

    c. HashMap:依靠数组+链表结构来存储;运行键和值是null;异步式线程不安全

    d. Hashtable:依靠数组+链表结构来存储;不允许键和值为null;同步式线程安全

    e. 遍历Map

  2. File:

    a. 代表文件或者目录的类

    b. 创建的file对象所代表的文件或者目录在计算机中不一定存在

    c. 在File的操作中,会大量应用筛选和递归

IO流

一、概述

  1. 是一套用于数据传输的机制

  2. 根据方向:输入流、输出流

  3. 根据形式:字符流(字符类文件:txt、java、html等)、字节流(图片、视频、音频等)

  4. 四大基本流都是抽象类,都不能直接创建对象

  5. 数据的来源/目的地:磁盘、网络、内存、外部设备

二、文件字符流

  1. 向txt文件写入字符串 --- 输出流、字符流、和文件相关的流 ---FileWriter

  2. 从txt文件读取数据 --- FileReader

  3. 练习:复制txt文件

三、缓冲流

  1. BufferedReader:在构建的时候需要传入一个Reader对象。真正读取数据依靠的是传入的这个Reader对象,BufferedReader从Reader对象中获取数据提供缓冲区

  2. 练习:统计java代码的行数 ---> 找到java文件

  3. BufferedWriter:提供了一个更大的缓冲区,其中提供了一个newLine()方法用于进行换行操作,以屏蔽不同操作系统的差异性

  4. BufferedReader和BufferedWriter基于了装饰者模式来进行设计的

扩展:装饰设计模式

  1. 是软件设计以及开发过程中常见的设计模式之一

  2. 设计模式:软件开发过程中一些常见问题的解决方案的总结

  3. 装饰模式特点:利用同类对象来构建本类对象,然后在本类中进行功能的改变或者是增强

四、流中的异常处理

  1. 无论流操作成功与否,关流操作都得发生,所以需要将关流操作放到finally代码块中

  2. 为了让流对象在finally依然能够使用,所以需要将流对象放在try之外声明并且要赋值为null,然后放在try之内进行实际的初始化过程

  3. 在关流之前要判断流对象是否初始化成功,实际上就是判断流对象是否为null

  4. 因为关流有可能失败,此时流会依然占用文件,所以需要将流对象置为null标记为垃圾对象进行强制回收以释放文件

  5. 如果流有缓冲区,那么为了防止关流失败导致没有进行自动冲刷,所以需要手动冲刷一次以防有数据死在缓冲区中而产生数据的丢失

五、文件字节流

  1. 文件字节输出流 -FileOutputStream。在输出的时候没有缓冲区,所以不需要进行flush操作

  2. 文件字节输入流 - FileInputStream。可以定义一个字节数组作为缓冲区

  3. 练习:复制文件

Last Updated: 11/18/2022, 10:55:14 AM