1. Buffered->功能流(节点流)
作用:提高字节流的读写效率,增强性能
字节流缓冲流
字节输入缓冲流 BufferedInputStream
字节输出缓冲流 BufferedOutputStream
注意:无新增方法需要使用,可以发生多态
字符流缓冲流
字符输入缓冲流 BufferedReader
新增功能:String reaLine()读一行文字
字符输出缓冲流 BufferedWriter
新增功能:void newLine()写一个行分隔符
注意:如果需要使用新增功能,不要使用多态调用
2.字节流的功能流
基本数据类型流Data
作用:能够读写带有数据类型的数据(要求:基本数据类型+字符串)
DataInputStream 基本数据类型输入流
新增方法: readXxx();
DataOutputStream 基本数据类型输入流
新增方法: writeXxx();
注意: 不能发生多态
读入的数据与写出的顺序保持一致
EOFException : 当读入的不是写出时的源文件遇到异常| 源文件存在改动遇到的异常
Object 流 | 对象流 | 引用数据类型流
作用: 可能读写数据保留数据的数据类型(引用数据类型|基本数据类型)
序列化 : 将对象类型的数据转为一个可以存储|可以传输的过程
反序列化 : 反转状态(转为java中的对象格式)
ObjectInputStream 反序列化输入流
新增方法: Object readObject() 从ObjectInputStream中读取一个对象。
ObjectOutputStream 序列化输出流
新增方法: void writeObject(Object obj) 将指定的对象写入ObjectOutputStream。
注意
1.先序列化后反序列化
2.读入与写出的顺序要保持一致
3.不是所有类型的数据都能够序列化 实现一个空接口 java.io.Serializable
4.不是所有的属性都需要序列化 transient修饰
5.静态的变量不会序列化
6.父类有实现序列化接口,子类可以序列所有成员
7.子类实现了序列化接口父类没有实现,子类只能序列化自己独有的内容
控制版本的统一性:
序列化的类型默认存在一个serialVersionUID = 1972236683886522887,根据成员的修改会更新
控制每次修改内容前后序列号统一,解决版本不兼容问题
为序列化的类提供序列号: idea工具生成 1)实现Serializable接口 2)设置Setting中配置
3,Commons IO
CommonsIO 是apache的一个开源的工具包,封装了IO操作的相关类,使用Commons IO可以很方便的读写件,url源代码等。
使用步骤:
1.下载资源文件 jar包
2.项目下进行整合 加入到资源目录中
项目下新家一个文件夹 lib ,jar包放入lib中
选中jar包,右键 add as lib…
常见的调用方法
去除目录和后缀后的文件名
FilenameUtils.getBaseName(String filename)
复制文件夹
FileUtils.copyDirectory(File srcDir, File destDir)
文件移动
FileUtils.moveFile(File srcFile, File destFile)
删除文件夹
FileUtils.deleteDirectory(File directory)
4,集合|容器
作用:存储多个数据
常见的简答题:
容器与数据之间的区别?
容器类和数组,整体没啥区别,归根结底都是为了编程计算算法等需要出现的数据结构
所以说容器类和数组本质一样 存储数据的方式不一样,数组的存储方式是固定的,就是在初始化的时候数组有多少个元素就是固定的,而且类型必须是一致,比如里面是int类型,里面存放的元素全是int类型,不能有其他的类型。
而数组又是最常用的数据结构 所以几乎所有高级语言都可以直接定义数组
而java的容器类 ArrayList 底层结构也是数组 但是他大小可变,可以存放不同类型的值,里面也有泛型,不止ArrayList,还有Set ,Map等等,方式都差不多。都是可变的。
数组的特点:
1.数组是一个引用数据类型
2,定长,长度一旦确定不可改变
3,存储任意类型的数据,存储数据的类型要求一致
4,有序,有索引|下标(从零开始)
容器:
可以随着数据的增删容量进行改变
存储任意引用类型的数据
遍历:
1.for…each|增强for循环
//对于集合col,通过增强for循环
for(Object obj:col){
System.out.println();
}
2.迭代器
//同样对于集合col,通过迭代器进行遍历
Iterator ab=col.iterator();
while(ab.hasNext()){
System.out.println(ab.next());
}