File类
计算机当中一切数据都是字节,文件就是硬盘当中用来存放字节数据的单位。
Windows当中表示路径: D:\abc\Hello.txt
Linux/macOS当中表示路径: /Users/someone/abc/Hello.txt
java.io.File对象可以表示文件或者文件夹。
表示文件:D:\abc\Hello.txt
表示文件夹:D:\abc
注意:绝对不能根据有没有后缀名来判断是文件还是文件夹。必须使用特殊的方法进行判断。
1.File类的构造方法
2.注意:
(1) 如果在字符串当中希望表示一个反斜杠,必须双写:\\
(2)每一个File对象只是代表了一种对照关系,并不是真正的创建文件或文件夹,
只是一个映射。
3.File类当中与获取相关的方法
4.File绝对路径与相对路径
绝对路径:从Windows判断开始,一直到具体的文件/文件夹的名称,一个完整的路径。 例如:D:\IdeaProjects\advance-69\day08-code\story.txt 相对路径:相对于当前项目而言(而不是模块),一个简短的路径。 例如:day08-code\story.txt
绝对路径可以使用“../”代表向上走一级。
5.File类中中与判断相关的方法
备注: 1. 既然new对象的时候,无论是否存在,都可以new。那么就需要通过exists()方法才能判断是否真的存在。 2. 绝对不能使用扩展名来判断是不是文件/文件夹,应该使用isFile()或者isDirectory()方法。
6.File类当中与创建相关的方法
7.File类当中的删除方法就一个
(1) 使用这种代码删除的东西,不会进入回收站(或者废纸篓),而是直接删除。所以必须谨慎操作。
(2) 如果删除的是一个文件夹,必须保证文件夹为空,才能删除;否则删除失败。
8.File类当中列出相关的方法
列出方法的时候,有一个重载形式也比较常用: public File[] listFiles(FileFilter filter):参数代表文件的过滤规则。 java.io.FileFilter是一个接口,其中的方法: boolean accept(File file):参数是每一个被检查的文件,返回值为true代表取用,为false代表舍弃。
9.列出书籍单级文件夹
多级的文件夹,用递归会更加方便。
递归
1.概念
方法的递归,不是新技术,只是一种特殊的调用方式:【方法自己调用自己】。
国外一个知名的IT网站:stacKoverflow
2.阶加
3.阶乘
4.内存图(包含一个为什么会出现内存不够用的现象?)
FillFilter
使用递归,列出指定文件夹深度遍历之后,所有的.java文件。
Lambda对filter的优化。
凡是只有一个接口的抽象方法,就能用lamda.
补充:
异常的抑制-addSuppressed
泛型的通配符的上下限:里氏替换
六个设计原则:
a.单一职责原则
b.迪米特法则
c.接口隔离原则
d.依赖倒置原则
e.开闭原则
f.里氏替换原则:前置条件放大,后置条件缩小。