File 类
File 类的生命周期
- 使用字符串路径创建 File 对象:这时只是一个路径,文件不一定存在
new File(String pathName) - 创建文件
createNewFiles() - 删除文件
delete()
File 类创建 File 对象要注意什么
File封装的对象仅仅是一个路径名,这个路径可以是存在的,也可以是不存在的
File 对象创建后可以做什么
File 对象创建文件需要注意什么
mkdir()只能创建一级文件夹
mkdirs() 可以创建多级文件夹
File 对象如何查看所有文件
listFiles方法:
当文件不存在时或者代表文件时,返回null
当文件对象代表一个空文件夹时,返回一个长度为0的数组
当文件对象是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
当文件对象是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
当没有权限访问该文件夹时,返回null
File 对象删除文件要注意什么
delete() 只能删除文件或空文件夹,删除后也不会存放在回收站
最佳实践:如何删除文件夹
①:File默认不可以删除非空文件夹
②:我们需要遍历文件夹,先删除里面的内容,再删除自己
字符集
有哪些常用的字符集
- ASCII字符集
- GBK字符集
- Unicode(UTF-8)字符集
三个字符集之间有什么不同
- ASCII使用1个字节存储一个字符,一个字节是8位,总共可以表示128个字符信息
- GBK编码中一个中文字符一般以两个字节的形式存储。同时兼容 ASCII 编码
- UTF-8编码后一个中文一般以三个字节的形式存储,同时也要兼容ASCII编码表
最佳实践:字符集选择
unicode字符集
为什么会出现乱码
对相同文本,编码存储和解码展示的过程中,使用的字符集不同造成的
比如,写入时,使用 UTF-8 编码,一个汉字三个字节,读取时使用 GBK 编码,每次将两个字节转换为一个汉字,这就导致读取的可能只有某个汉字的一半。
如何在Java中将字符串转换为字节,并且按照要求的字符集进行转换(编码)
如何在Java中将字节转换为字符串,并且按照要求的字符集进行转换(解码)
IO流
IO 流体系
所谓的输入流、输出流,是以什么为基准说的
内存
输入就是,从磁盘或网络上,将数据传输到内存
输出就是,从内存,将数据传输到磁盘或网络
字节流和字符流有什么差别
字节流可以操作所有类型的文件,包括音频视频图片等
字符流只能操作文本文件,包括java文件,txt文件等
字节流
如何创建输入字节流
如何读取
每次读取一个字节有什么问题,如何解决
性能较慢
读取中文字符输出无法避免乱码问题
可以每次读取一个字节数组,加快速度
每次读取一个字节数组有什么问题,如何解决
读取中文字符输出无法避免乱码问题
定义一个与文件一样大的字节数组,一次性读取完文件的全部字节
把文件数据全部读取到一个字节数组可以避免乱码,有什么问题
如果文件过大,字节数组可能引起内存溢出
如何创建输出字节流
如何输出字节
如何输出特殊字符
如
os.write(“\r\n”.getBytes())
如何让写出去的数据能够生效
刷新流或关闭流
资源释放
什么是资源
try catch 和 try resources 有什么不同
try catch finnally 可以在 finnally 中 释放资源,然而可以使用 try resources 简化代码