IO流、集合
一、IO流
1、缓冲流
作为功能流,可以提高节点流的读写效率,增强性能
1、字节缓冲流
字节输入缓冲流:BufferedInputStream
字节输出缓冲流:BufferedOutputSream
PS:无新增方法,可以发生多态
2、字符缓冲流
字符输入缓冲流:BufferedReader
字符输出缓冲流:BufferedWriter
PS:有新增方法,不要多态使用
2、Data流
字节流的功能流:基本数据类型流
作用: 能够读写带有数据类型的数据(要求: 基本数据类型+字符串)
基本数据类型输入流:DataInputStream
基本数据类型输出流:DataOutputStream
PS:有新增方法
注意:
读入的数据与写出的顺序保持一致
EOFException : 当读入的不是写出时的源文件遇到异常| 源文件存在改动遇到的异常
3、Object流
又叫对象流或者引用数据类型流
作用:可以读写保留所有数据类型的数据
序列化 : 将对象类型的数据转为一个可以存储|可以传输的数据的过程
反序列化 : 反转状态(将序列化过的数据转为java中的对象格式)
反序列化输入流:ObjectInputStream
序列化输出流:ObjectOutputStream
PS:有新增方法
注意:
1.先序列化后反序列化
2.读入与写出的顺序要保持一致
3.不是所有类型的数据都能够序列化 实现一个空接口 java.io.Serializable
4.不是所有的属性都需要序列化 transient修饰
5.静态的变量不会序列化
6.父类有实现序列化接口,子类可以序列所有成员
7.子类实现了序列化接口父类没有实现,子类只能序列化自己独有的内容
控制版本的统一性: 序列化的类型默认存在一个serialVersionUID = 1972236683886522887,根据成员的修改会更新
控制每次修改内容前后序列号统一,解决版本不兼容问题
为序列化的类提供序列号: idea工具生成 1)实现Serializable接口 2)设置Setting中配置 3)选中类名 alt+enter按钮
4、CommonIO
CommonsIO 是apache的一个开源的工具包,封装了IO操作的相关类,使用Commons IO可以很方便的读写件,url源代码等。
使用步骤:
1、下载资源文件 jar包
2、项目下进行整合 加入到资源目录中
3、项目下新建一个文件夹 lib ,把jar包放入lib中
4、选中jar包,右键 add as lib...
方法名 | 作用 |
---|---|
FileUtils.copyFile() | 复制文件 |
FileUtils.copyDirctory() | 复制文件夹 |
FileUtils.deleteQuietly() | 删除文件 |
FileUtils.deleteDiretory() | 删除文件夹 |
FileUtils.cleanDircyory() | 清空文件夹 |
二、集合
也叫容器,可以存储多个数据
数组和集合的区别
数组:
1.数组是一个引用数据类型
2.定长,长度一旦确定不可改变
3.存储任意类型的数据,存储数据的类型要求一致
4.有序,有索引|下标(从0开始)
集合:
可以随着数据的增删容量进行改变
存储任意引用类型的数据
Collection
/ \
Set List Map
| / \ |
HashSet LinkedList ArrayList HashMap
1、方法
多态写法:Collection col=new ArrayList();
方法名 | 作用 |
---|---|
size() | 获取集合元素个数 |
add() | 添加数据 |
addAll() | 添加参数集合全部数据 |
clear() | 从此集合中删除所有元素 |
contain() | 如果此集合包含指定的元素,返回true |
isEmpty() | 如果此集合不包含任何元素,返回true |
remove() | 从此集合中移除指定元素 |
removeAll() | 从此集合中移除与参数集合重复的部分元素 |
retainAll() | 仅保留此集合中与参数集合重复的部分元素 |
toArray() | 返回包含此集合中所有元素的数组 |
2、遍历集合
1、for..each
for(Object o:col){
System.out.println(o);
}
2、迭代器
Iterator it=col.iterator();
while(it.hasNext()){
System.out.println(it.next());
}