一、IO概述
-
I/O 输入/输出流(数据流动)
-
数据流动的方向: 读数据(输入Input) 写数据(输出Ootput)
-
文件流
-
缓冲流
-
字符流
-
对象流
二、文件流
- 读取文件中的信息in,将信息写入文件中out
- 文件流按照读取或写入的单位(字节数)大小区分
- 字节型文件流(1个字节)
FileInputStream/FileOutputStream - 字符型文件流(2个字节–1个字符)
FileReader/FileWriter
三、缓冲流
- 缓冲流(高级流)
在管道内增加缓存的数据
让我们使用流读取的文字更加流畅
高级流---->创建通过低级流
BufferedInputStream/BufferedOutputStream
BufferedReader/BufferedWrite
BufferedInputStream
构建方式:使用低级流构建
基本使用与低级流的方法完全一样
BufferedOutputStream
构建方式:使用低级流构建,注意缓冲流构建的时候没有boolean类型的参数
基本使用与低级流的方法完全一样
BufferedReader
String = readLine();//读一行信息
BufferedWrite
write(String );
newLine();
四、字符流
1.字节型文件输入流
- FileInputStream
1、java.io包
2、继承关系 继承InputStream类,字节流输入的父类
3、创建对象
调用一个带File类型的构造方法
调用一个带String类型的构造方法
4、常用的方法
int code = read();每次从流管道中读取一个字节,返回字节的code码
int count = read(byte[])每次从流管道中读取若干个字节,存入数组内,返回有效元素个数
int count = available();返回流管道中还有多少缓存的字节数
long = skip(long n);跳过几个字节读取
一般多线程利用
void = close();将流管道关闭---必须要做,最好放在finally里,注意代码的健壮性,判断严谨
2.字节型文件输出流
- FileOutputStream 将数据写入文件中
1、java.io包
2、继承OutputStream类 所有字节型输出流的父类
3、创建对象
调用一个带File参数 还有带File boolean两个参数的重载
调用一个带String参数 还有带String boolean两个参数的重载
4、常用方法
write(int code);将给定code对应的字符写入文件,也可以写‘=’
write(byte[]);将数组中的全部字节写入文件,也可以使用String str然后通过str.getByte()转化 为byte[]数组,
flush();将管道内的字节推入(刷新)文件
close();注意在finally中关闭
3.字符型文件流(2个字节–1个字符)
- FileReader
只能操作纯文本文件
FileReader
1、java.io包
2、继承 InputStreamReader Reader
3、构造方法
4、常用方法
read() read(cher[] )
- FileWriter
1、java.io包
2、继承 OutputStreamWrite Write
3、构造方法
调用一个带File参数 还有带File boolean两个参数的重载
调用一个带String参数 还有带String boolean两个参数的重载
4、常用方法
write(int)
write(char[])
write(string)
flush() close()
五、对象流
- 对象流(高级流)
- 对象的序列化指的是:将一个完整的对象拆分成字节碎片,记录在文件中
- 对象的反序列化指的是:将文件中记录的对象随便反过来组合成一个完整的对象
- 如果想要将对象序列化到文件中
需要让对象实现Serializable接口
是一个示意性接口
同时为了让对象可以反序列化
需要让对象中多存一个属性 private long serialVersionUID = 任意写L;
- 如果想要将对象反序列化
需要给对象提供一个序列化的版本号
六、文件File类
- File类---->与电脑上的文件或文件夹产生一一对应的映射关系
- file是一个类
- java.io包
- 文件或目录路径的抽象表示形式
- file与真实硬盘中的文件或文件夹不是一个东西
file是内存中的一个对象------映射-----硬盘上的文件或文件夹
- file类中常用的方法
canRead() canWrite() isHidden() isFile() isDirectory()
length()获取文件中字节的个数
lastModified()获取文件最后的修改时间---->毫秒值
String = getAbsolutePath()获取文件的绝对路径
绝对路径 相对路径
绝对路径可以通过完整的字符串定位盘符,文件夹,文件
相对路径没有盘符的写法,在当前工程(项目)所在的位置找寻
String = getName()获取文件的名字
boolean = createNewFile()创建新的文件
boolean = mkdir() 创建新的文件夹,外层没有,不能创建
boolean = mkdirs() 创建新的文件夹,外层没有,可以自动创建
String = getParent() 获取当前file的父亲file名字
File = getParentFile()获取当前file的父亲file对象
String[] = list()获取当前file的所有儿子名字
File[] = listFiles()获取当前file的所有儿子对象
boolean = delete() 删除文件或空的文件夹,不能删除带元素的文件夹