File的简介
1.生活中的文件
(1)文件的作用:持久化(瞬时状态的对立状态)
(2)文件的定义:一堆的数据的集合
(3)文件存储的位置:磁盘,硬盘,软盘,u盘等等
2.计算机中的文件File
(1)File的定义:java.io中的File类
(2)创建File: new File( ); //创建文件实例
(3)File属性: 文件的位置,文件的名称,文件的内容
3.File文件的增删查
(1)添加文件
小校验:
(2)查询文件
(3)删除文件
流
1.生活中的流
人流,车流 类似于 人或是车的集合
2.计算机中流
定义:数据的集合【机制:先进先出】
流传递的方向:从源数据源 传递到目标数据源
3.流的指向
(1)读入【文件 读入到 程序中】
(2)写出【程序 写出到 文件中】
4.流的分类
(1)按流向分:输出流:OutputStream 和 Writer
输入流:InputStream 和 Reader
(2)按照处理单元分:
字节流:InputStream 和 OutputStream
字符流:Reader 和 Writer
字节流
FileInputStream字节输入流实现读取
场景1:
场景2:
场景3:
场景4:
核心要点:利用数组机制,将读取的内容存储到数组中,效率大大提高
fis.read(byte[] b):
将 byte.length 个字节的数据从fis流中读入到数组b中,返回值为数组中数据的总长度
场景5:
核心要点:利用字节输入流(FileInputStream)和字节输出流(FileOutputStream)实现复制
场景6:【场景1-场景5的代码优化】(流必须close)
字符流
1.字节流乱码问题
核心要点:处理中文不要用字节流
2.FileReader字符流实现读取
核心要点:如果文件中出现中文,需要用字符流实现字符串的输出
fis.read(char[] b):
将 fis流中的数据读入到数组b中,返回值为数组中数据的总长度
3.FileWriter字符流实现写出
缓冲流
1.字符流FileReader加BufferedReader实现读取
核心要点:BufferReader类似于在FileReader外层套一层“管道”
2.字符流FileWriter加BufferedWriter实现写出
复制
1.字符流实现复制
2.复制二进制文件(图片,视频)
核心要点:一般复制二进制文件/图片/视频 建议使用字节流加
DataInputStream/DataOuputStream的流【稳定,放数据缺失】