![e8e78de89cd6509cae6854fc3a560e04.png](https://i-blog.csdnimg.cn/blog_migrate/ec3cb284ab1d41e45d7b2e69fac4e6f8.jpeg)
文件是数据的一个容器(口袋),文件可以存放大量的数据。文件很大,注定Java只能以流形式依次处理,每次处理一点点。
1. 文本文件读写
- 写文件:输出文本字符到文件中。
-> 先创建文件,写入数据,关闭文件
-> FileOutputStream(节点类,负责写字节), OutputStreamWriter(转化类,负责写文件时字符到字节转化), BufferedWriter(装饰类,负责写字符到缓存区);
![83c867b8ac927afa6d14b29d2074c9fd.png](https://i-blog.csdnimg.cn/blog_migrate/01b506654eb06dddb11f2463615e3e5b.png)
三者构建关系:BufferedWriter(OutputStreamWriter(FileOutputStream))
-> BufferWriter: write(写), newLine(换行)
-> try-resource语句,自动关闭资源。(一个文件被程序打开了,就处于锁定状态了,防止其他程序访问。如果程序最后退出,没有关闭文件资源,将导致其他程序不能访问该文件)
-> 关闭最外层的数据流,将会把其上所有的数据流关闭
- 读文件:从文件中读取文本字符串
-> 先打开文件,逐行读入数据,关闭文件
-> FileInputStream(节点类,负责读文件字节), InputStreamReader(转化类,负责读文件时字节转字符), BufferedReader(装饰类,负责从缓存区读字符)
![48543a4085d750b0e14d7839a00d49f3.png](https://i-blog.csdnimg.cn/blog_migrate/8bd662f3153b0b68d5ca0ac12dc537e1.png)
-> BufferReader: readLine
-> try-resource语句,自动关闭资源
-> 关闭最外层的数据流,将会把其上所有的数据流关闭
public
2. 二进制文件读写
二进制文件:
-> 狭义上说,二进制文件是采用字节编码,非字符编码的文件
-> 广义上说,一切文件都是二进制文件
-> 用记事本等无法打开/阅读
包括:
-> 一般二进制文件,如数据文件dat
-> 带特殊格式的文本文件,如xml等
-> 带特殊格式二进制文件,如doc,ppt等
二进制文件读写:
-> 输出数据到文件中
-> 从文件中读取数据
- 写文件:
- > 先创建文件,写入数据,关闭文件
-> FileOutputStream(节点类,负责写字节), BufferedOutputStream(装饰类,负责缓存字节流), DataOutputStream(装饰类,负责封装数据流,也即数据类型到字节转化)
![b2350e1442a5800dfe90ac3ebc1b9de2.png](https://i-blog.csdnimg.cn/blog_migrate/3514570a7408db891a20eaa566278cdf.png)
-> DataOutputStream: flush(刷新缓存), write/writeBoolean/writeByte/writeChars/writeDouble/writeInt/writeUTF/...
-> try-resources语句,自动关闭资源。(一个文件被程序打开了,就处于锁定状态了,防止其他程序访问。如果程序最后退出,没有关闭文件资源,将导致其他程序不能访问该文件)
-> 关闭最外层的数据流,将会把其上所有的数据流关闭
- 读文件
-> 先打开文件,读入数据,关闭文件
-> FileInputStream(节点类,负责从文件系统读字节), BufferedInputStream(装饰类,负责从缓存区读取字节流), DataInputStream(装饰类,封装数据流,字节转为数据类型)
![2ab6cfcf0e96f5464997dc043810e4c3.png](https://i-blog.csdnimg.cn/blog_migrate/2c4d29f8264194f52bb26ad0e6714612.png)
-> DataInputStream: read/readBoolean/readChar/readDouble/readFloat/readInt/readUTF/...
-> try-resource语句,自动关闭资源
-> 关闭最外层的数据流,将会把其上所有的数据流关闭
public
3. Zip文件读写
压缩包:zip, rar, gz, ...
Java zip包支持Zip和Gzip包的压缩和解压