一、概念
是内存和程序
二、分类
读取:读取本地文件中的数据
写出:把数据写到本地文件中
纯文本文件:windows自带的记事本可以打开并且读的懂的文件(TXT,MD)
三、体系结构
(一)字节流
OutputStream
FileOutputStream
写数据的方法:
写数据的两个小问题:换行和续写
换行写:
续写:
InputStream
FileInputStream
读取数据的方法:
单个读取
循环读取
文件拷贝
一次只读一个字节
一次读取多个字节
正确写法:
拷贝大文件:
try...catch异常处理
(二)字符集
字节流读取中文会出现乱码
ASCII+GBK:
Unicode:万国码
为什么会有乱码?
原因一:字节流一次读取一个字节,三个字节组成一个汉字
Java中编码和解码的方法:
解决字节流一次读取一个字节而导致的汉字乱码问题
(三)字符流
FileReader
FileWriter
字符流和字节流的使用场景
综合练习:
1、拷贝文件夹,包括子文件夹
2、文件加密和解密
A异或B异或B=A
文件加密:
文件解密:
3、修改文件中的数据
(四)高级流
缓冲流
字节缓冲流
缓冲流拷贝文件:
字符缓冲流
要续写:
综合练习:
1、将文件中的内容排序,并且拷贝到另一个文件中
方法一:
方法二:
TreemAp中的默认排序方法是从小到大
2、软件运行次数
转换流
练习1:
练习2:
序列化流
反序列化流
序列化流和反序列化流的使用细节
当javabean中的内容发生改变时,原来的序列化流输入到文件中的内容会发生变化,这是因为文件中存储的版本号和javabean中存储的版本号不一致;
解决方法:固定javabean的版本号,即在javabean中定义private static final long serialVersionUID=1L;
练习:
打印流——不能读,只能写
字节打印流:
应用:
字符打印流:
解压缩流
练习:
解压缩压缩包到本地文件夹:
**压缩流 **
练习:压缩单个文件
练习:压缩文件夹(复杂)
(五)Commons-io工具包
(六)HuTool工具包
综合练习
1、从网站爬取数据
爬取网站的所有数据:
获取自己想要的数据:
在主函数中调用这些方法: