前言
首先感谢您的阅览,本篇主要记录File的基本使用,及一些api,结合案例。
文章或有不足,还望多多包涵,也欢迎您的补充与指正,希望小小的笔记能帮到您答疑解惑
File概述
File对象就表示一个路径,可以是文件的路径、也可以是文件夹的路径
这个路径可以是存在的,也允许是不存在的
使用方式如下
有了File对象,就可以调用对应的api来操作
File成员方法
方法使用格式都大同小异
File f = new File("路径");
f.你想调用的方法;
判断获取相关
创建删除相关
获取并遍历
主要是用蓝色标记的方法,获取路径下的所有内容(就是该文件夹里的所有文件和文件夹),并放入数组中返回
细节
- 当调用者File表示的路径不存在时,返回null
- 当调用者File表示的路径是文件时,返回null
- 当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组
- 当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
- 当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
- 当调用者File表示的路径是需要权限才能访问的文件夹时,返回null
案例
使用范例
删除多级文件夹
public static void deleteAll(File src){
//1.进入目录,获取所有内容
File[] files = src.listFiles();
//2.遍历
for (File file : files) {
if (file.isFile()){
//判断是否是一个文件
//是文件,执行删除业务
file.delete();
}else {
//不是文件而是文件夹,需要递归,先删除文件夹内部数据
deleteAll(file);
//当内部递归调用完后,该文件夹中文件删除干净后,该文件夹就为null了,for循环结束
//直接走到递归方法的最下面的删除业务,所以调用递归方法,最终可以删除该文件夹下所有数据以及该文件夹
}
}
src.delete();
}
统计文件夹大小
public static long sumLength(File src){
/**
* 统计文件大小(包括子文件夹中的内容)
*/
File[] files = src.listFiles();
long len = 0;
for (File file : files) {
if (file.isFile()){
len = len + file.length();
}else {
//这里递归不行是因为,每次递归回调该方法,len会被初始化为0;又从0开始加
//而且子文件夹里的数据大小return出来后也没有接收,所以需要用下面的写法接收大小
len = len + sumLength(file);
}
}
return len;
}