File类概述
- File类在包java.io.File下、代表操作系统的文件对象(文件、文件夹)。
- File类提供了诸如:定位文件,获取文件本身的信息、删除文件、创建文件(文件夹)等功能。
File类的常用API
File类创建对象:
File对象可以定位文件和文件夹
File封装的对象仅仅是一个路径名,这个路径可以是存在的,也可以是不存在的。
File类的判断文件类型、获取文件信息功能
- delete方法直接删除不走回收站;如果删除的是一个文件,且文件没有被占用则直接删除。
- delete方法默认只能删除空文件夹。
listFiles方法注意事项:
- 当调用者不存在时,返回nul
- 当调用者是一个文件时,返回null
- 当调用者是一个空文件夹时,返回一个长度为0的数组
- 当调用者是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
- 当调用者是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏内容
方法递归
递归的形式和特点
递归的算法流程、核心要素
递归算法三要素大体可以总结为:
- 递归的公式:f(n)=f(n-1)*n;
- 递归的终结点:f(1)
- 递归的方向必须走向终结点
非规律化递归案例-文件搜索
案例需求:文件搜索、从C:盘中,搜索出某个文件名称并输出绝对路径。
分析:
- 先定位出的应该是一级文件对象
- 遍历全部一级文件对象,判断是否是文件
- 如果是文件,判断是否是自己想要的
- 如果是文件夹,需要继续递归进去重复上述过程
非规律化递归案例-啤酒问题(略)
字符集
案例:
IO流概述
四大抽象类:
字节流的使用
1、Filelnputstream
每次读一部分:
一次性读完(方式2,jdk9开始):
2、 FileOutPutSteam
3、使用字节流复制文件(案例):
字节流适合做一切文件数据的拷贝吗?
- 任何文件的底层都是字节,拷贝是一字不漏的转移字节,只要前后文件格式、编码一致没有任何问题。
资源释放的方式
try-catch-finally
- finally:在异常处理时提供finally块来执行所有清除操作,比如说IO流中的释放资源
- 特点:被finally控制的语句最终一定会执行,除非VM退出
- 异常处理标准格式:try..catch..finally
格式:
finally虽然可以用于释放资源,但是释放资源的代码过于繁琐?
JDK7和JDK9中都简化了资源释放操作(推荐JDK7)
注意
- DK7以及DK9的()中只能放置资源对象,否则报错
什么是资源呢?
- 资源都是实现了Closeable/AutoCloseable接口的类对象
try-with-resource
字符流的使用
文件字符输入流:Reader
作用:以内存为基准,把磁盘文件中的数据以字符的形式读取到内存中去。
一次读(进内存)一个字符数组:
文件字符输入流:Writer
写(进硬盘)字符流:
另:
字节流、字符流如何选择使用?
- 字节流适合做一切文件数据的拷贝(音视频,文本)
- 字节流不适合读取中文内容输出
- 字符流适合做文本文件的操作(读,写)
- File类可以定位文件:进行删除、获取文本本身信息等操作。但是不能读写文件内容。
- IO流技术可以对硬盘中的文件进行读写