File类
File类 : 计算机中的文件和文件夹的类 -> File类 计算机中的所有硬盘内容
File类的构造方法
***File(String pathname) : 直接传入目标文件的路径,让File对象指向路径结尾的文件/文件夹
File(String parent, String child)
**File(File parent, String child)
创建File对象做了哪些事情 :
1. 产生了File对象
2. 在堆内存中开辟了空间
3. 如果文件/文件夹不存在不会创建文件/文件夹同时也不会报错
4. 如果文件/文件夹存在也不会覆盖老文件/老文件夹同时也不会报错
相对路径和绝对路径
相对路径和绝对路径 : 文件/文件夹的路径表示形式
绝对路径 :
绝对能找到资源的路径 -> 完整路径
特点 : 从盘符开头 [只要看到一个路径以盘符开头,那么这个路径一定是绝对路径]
相对路径 :
相对一个起点的简化寻找资源的路径 -> 简单路径的表现
最重要的是 参照物 -> 其实就是直接在参照物开始找寻(往内) 这个是相对
IO板块的参照物 是当前项目的根目录 //当前项目内的资源,可以用相对路径表示
特点 : 不以盘符开头
File类的创建功能
boolean createNewFile() : 创建文件 ,只创建文件
//如果文件不存在,创建文件; 文件存在不会覆盖源文件
boolean mkdir() : 创建单级文件夹 , 只能创建文件夹
boolean mkdirs() : 创建多级文件夹 , 只能创建文件夹
File类的删除功能(了解)
boolean delete() : 删除File对象指向的文件和文件夹
注意1 : delete 方法删除是不走回收站的
注意2 : delete 删除文件夹只是删除文件夹! 如果文件夹内有内容那么文件夹删除失败
File类的判断功能
*boolean exists() : 判断File对象指向的文件/文件夹 是否存在
*boolean isFile() : 判断File对象指向的文件/文件夹 是否是文件
*boolean isDirectory() : 判断File对象指向的文件/文件夹 是否是文件夹
boolean isAbsolute() : 判断File对象指向的文件/文件夹 是否是以绝对路径创建的
boolean isHidden() : 判断File对象指向的文件/文件夹 是否是隐藏文件/文件夹
File类的获取功能
File getAbsoluteFile() : 获取File对象指向的文件/文件夹 的 绝对路径的表现形式,以File对象类型返回
String getAbsolutePath() : 获取File对象指向的文件/文件夹 的 绝对路径的表现形式,以String对象类型返回
* String getName() 获取File对象指向的文件/文件夹 的名称
//此方法会把路径结尾的那个文件/文件夹的所有前置路径都作为父路径
String getParent() : 获取File对象指向的文件/文件夹 的 父路径对象 //String类型返回结果
File getParentFile() : 获取File对象指向的文件/文件夹 的 父路径对象 //File类型返回结果
String getPath() : 获取创建File对象时,程序员传入的路径
* long length() : 获取File对象指向的文件的所占字节数(长度) //文件夹没有大小
long lastModified() : 获取File对象指向的文件/文件夹 的最后修改时间 //时间毫秒值
FIle类的文件夹遍历功能
File[] listFiles() : 获取File对象指向的文件夹 根目录的所有文件和文件夹
注意事项 :
1. listFiles() 只能遍历单级文件夹
2. listFiles() 不能够去遍历文件 //如果遍历文件 返回null
带过滤条件的文件夹遍历
File[] listFiles(FileFilter filter) : 带过滤器的文件夹遍历
FileFilter : 文件过滤器接口
抽象方法 : boolean accept(File file)
//File file : 遍历时获取到的文件对象
重写accept方法是在编写过滤条件
如果返回true 装进数组中
如果返回false 不装进数组中
小案例
/*
多级文件夹的遍历
递归 : 方法调用方法自己
递归 :
1. 一定要定义方法
2. 定义的方法一定写形参 -> (每一次递归传递进来的实参要发生改变)
3. 每一次递归实参的变化要往出口方向前进
4. 递归有出口
5. 找规律
出口 : 如果是文件
参数变化 : 再次调用方法时传入的是子文件夹
*/
public static void main(String[] args) {
//创建根目录
File root = new File("C:\\Users\\WH-HKB\\Desktop\\IdeaProjects");
getFileName(root);//第一次调用 : 根目录
}
public static void getFileName(File file){//第一次调用 : 根目录 接下来的调用 根目录下的子文件/子文件夹
//先写出口
if (file.isFile()){
System.out.println("\t文件有 : " + file.getName());
return;
}
//再写规律
//如果能从上方判断下来,说明file对象指向的 一定是一个文件夹
System.out.println("文件夹有 : " + file.getName());
//过滤时只要.java文件
File[] files = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".java") || pathname.isDirectory();
}
});
for (File ziFile : files) {
//不管ziFile是文件还是文件夹
getFileName(ziFile);//后续调用 : 子目录
}
}
标签:API,文件,String,对象,boolean,文件夹,File,使用
From: https://www.cnblogs.com/Jing-com/p/16653934.html