2023/3/2文件File
一、File对象的创建方式
1、File(String pathname)
2、File(String parent, String child)
3、File(File parent, String child)
4、绝对路径和相对路径是什么意思:
①绝对路径是从盘符开始的路径
②相对路径默认从当前项目下去找
二、File常见成员方法
1、判断是否为文件夹:isDirectory()
2、判断是否为文件 :isFile()
3、判断此路径表示的File是否存在: exist()
4、返回文件的长度:length()
5、返回文件的绝对路径:getAbsolutePath()
6、返回定义文件时的路径:getPath()
7、返回带有后缀的文件名:getName()
8、返回文件的最后修改时间:lastModified()
9、创建一个新的文件:createNewFile()
①如果当前路径的文件不存在,则创建成功,返回true
②如果当前路径的文件存在,创建失败,返回false
③如果父级路径不存在,方法会产生异常
④这个方法创建的一定是个文件,如果路径中没有包含后缀名,那么将会创建一个没有后缀的文件
10、创建单级文件夹:mkdir()
①Windows中路径是唯一的,如果路径重复,则创建失败,返回false
②mkdir方法只能创建单级文件夹,无法创建多级文件夹
11、创建多级文件夹:mkdirs()
12、删除文件、空文件夹:delete()
①如果删除的是文件,直接删除不走回收站
②如果删除的是空的文件夹,直接删除不走回收站
③如果删除的是有文件的文件夹,会删除失败!
13、获取路径下的所有内容:File[] listFiles()
①当调用者File表示的路径不存在,返回null
②当调用者File表示的路径是文件时,返回null
③当调用者File访问的路径需要权限时,返回null
④当访问的路径是空文件夹时,返回一个空数组
⑤当访问的路径是一个有内容的文件夹时,把里面所有的文件和文件夹的路径放在File[]数组中返回(包括隐藏文件)
14、列出所有文件系统根:static File[] listRoots()
15、获取当前路径下的所有内容,仅返回名字:String[] list()
16、利用文件名过滤器获取当前路径下的所有内容,仅返回名字:String[] list(FilenameFilter filter)
17、获取当前路径下的所有内容,返回文件:File[] listFiles()
18、利用文件过滤器获取当前路径下的所有内容,返回文件:File[] listFiles(FileFilter filter)
19、利用文件名过滤器获取当前路径下的所有内容,返回文件:File[] listFiles(FilenameFilter filter)
与上面的区别是,FilenameFilter的参数是分开的,而FileFiter的参数是两部分
练习:数一下一个文件里各个类型的文件个数分别是多少
public class Test6 {
public static void main(String[] args) {
File file = new File("D:\\QQ");
System.out.println(count(file));
}
private static HashMap<String, Integer> count(File src) {
HashMap<String, Integer> map = new HashMap<>();
File[] files = src.listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile()) {
String[] arr = file.getName().split("\\.");
if (arr.length >= 2) {
String key = arr[arr.length - 1];
if (map.containsKey(key)) {
int num = map.get(key);
num++;
map.put(key, num);
} else {
map.put(key, 1);
}
}
} else {
HashMap<String, Integer> sonMap = count(file);
for (Map.Entry<String, Integer> entry : sonMap.entrySet()) {
if (map.containsKey(entry.getKey())){
int num = map.get(entry.getKey());
map.put(entry.getKey(), num + entry.getValue());
} else {
map.put(entry.getKey(), entry.getValue());
}
}
}
}
}
return map;
}
}