1.IO流:
1.定义:泛指对所有输入输出操作的框架;input和output
2.分类:
1.方向(相对于程序或内存):
输入流:带read的流输出流:带write的流
2.功能:节点流:直接连接到资源,以File开头,可以直接从目录获取(目录 用“/”或“\\”)处理流:也称为高级流,对现有的流进行处理,经过处理流包装的流就形成一个流链,不能直接与文件相连,是一种装饰模式3.内容:字符流:对字符进行操作(Reader,Writer)字节流:机器语言0.1,8个为一个字节(InputStream,OutputStream),不能用字符时再用字节
2.流:指管道,对“读”和“写”两种操作的抽象表示,最后要进行关闭:r.close();
3.四种顶级流的抽象表示:
1.Reader :输入字符流
2.Writer :输出字符流
3.InputStream :输入字节流
4.OutputStream :输出字节流
4.File类:
1.说明:可以表示计算机上的一个文件(目录),对其整体进行操作,获取文件的所有属性信息
2.File类和IO流的相关类和接口都在java.io中
3.常用方法:
length() :获得长度exists() :判断是否存在creatNewFiles() :创建新文件creatTemFiles() :创建临时文件isFile() :类型是否为文件isDirectory() :类型是否为目录isHidden() :判断是否隐藏getParent() :获得上一级路径getPath() :获得完整路径getName() :获得文件名getlastModified():最后一次修改时间(毫秒)listFiles() :获得所有的子文件mkdir() :创建空目录mkdirs() :创建多层次目录delete() :删除普通文件或空目录
4.种类:
普通文件空的目录非空目录
5.递归方法:
1.说明:在方法体调直接或间接调用自身的方法
2.作用:将一个大规模的问题,简化成小规模的相同问题
3.要求:必须有结束条件,否则会产生栈溢出异常
4.性能:解决问题可以用循环或递归解,用循环解决性能更好
5.案例:遍历树(删除非空目录);二分法;斐波那契数列
6.字符流:
1.Reader:输入字符流的抽象类
1.FileReader(节点流):文件的字符输入流:
FileReader fr=new FileReader(文件或目录);
while((int c=fr.read())!=-1){
System.out.println((char)c);
}
fr.close();
2.BufferedReader(处理流):带缓冲的字符输入流(增加了readLine()方法):
BufferedReader br=new BufferedReader(File file);
While((String s=br.readLine())!=null){
str=str+s;
}
br.close();
2.Writer:输出字符流的抽象类
1.FileWriter :文件的字符输出流2.BufferedWriter :带缓冲的字符输出流(增加了newLine()方法)3.PrinteWriter :打印流
7.字节流:
1.说明:可以处理任何类型的数据
2.两个抽象类:
1.InputStream(读字节):读流的步骤:
1.创建流
2.读字节(字符)3.关闭
2.OutputStream(写字节):用到了try,catch,关闭流写在finally里3.实现类:
1.对象流:
1.说明:可以将java中的基本数据类型或自定义类写到流中(ObjectOutputStream),或从流中读取(ObjectInputStream),读和写的顺序必须相同,只能写出通过对象流输入的信息
2.ObjectOutputStream常用的方法:writeInt,writeXxx,writeUTF(字符串),writeObject(通过这个方法写入的对象一定要实现java.io.Serializable接口[标识接口])
8.Serialization(序列化):
1.定义:将对象的状态信息转换为可以存储或传输的形式的过程。
2.说明:在序列化期间,对象将其当前状态写入到临时或持久性存储区;以后,可以从存储区中读取反序列化对象的状态,重新创建该对象。
3.技巧:可以将不确定个数的n个对象存到集合(List,Set,Map)中,再进行序列化
4.典例:深复制(深复制指的是创建一个与当前对象相同的新对象,对象中引用的所有对象也创建新的的副本)
9.Properties(属性文件):
1.说明:Hashtable的子类
2.作用:可以将Hashtable中的数据存储到文件中