1.概述
- File对象就表示一个路径,可以是文件的路径、也可以是文件夹的路径
- 这个路径可以是存在的,也允许是不存在的
2.常见的构造方法
- public File(String pathname):根据文件路径创建文件对象
- public File(string parent,string child):根据父路径名字符串和子路径名字符串创建文件对象
- public File(Fileparent,string child):根据父路径对应文件对象和子路径名字符串创建文件对象
案例1:
//根据字符串表示的路径,创建对象
String s = "C:\\Users\\GZL\\Desktop\\11.txt";
File f1 = new File(s);
System.out.println(f1);//C:\Users\GZL\Desktop\11.txt
//父级路径和子级路径进行拼接
String parent = "C:\\Users\\GZL\\Desktop";
String child = "11.txt";
File f2 = new File(parent,child);
System.out.println(f2);//C:\Users\GZL\Desktop\11.txt
//3.
File parent2 = new File("C:\\Users\\GZL\\Desktop");
File f4 =new File(parent2,child);
System.out.println(f4);//C:\Users\GZL\Desktop\11.txt
3.常见的成员方法
1. (判断,获取)
- public boolean isDirectory():判断此路径名表示的File是否为文件夹
- public boolean isFile():判断此路径名表示的File是否为文件
- public boolean exists():判断此路径名表示的File是否存在
- public long length():返回文件的大小(字节数量)
无法获取文件夹大小。
- public string getAbsolutePath():返回文件的绝对路径
- public string getPath():返回定义文件时使用的路径
- public String getName():返回文件的名称,带后缀
- public long lastModified():返回文件的最后修改时间(时间毫秒值)
案例2:
File f1 =new File("C:\\Users\\GZL\\Desktop\\11.txt");
System.out.println(f1.isDirectory());//false
System.out.println(f1.isFile());//true
System.out.println(f1.exists());//true
System.out.println(f1.length());//39
System.out.println(f1.getAbsoluteFile());//C:\Users\GZL\Desktop\11.txt
File f2 = new File("day30\\a.txt");
System.out.println(f2.getAbsoluteFile());//G:\JavaReview\farmerandlord\day30\a.txt
System.out.println(f2.getPath());//day30\a.txt
System.out.println(f2.getName());//a.txt
long time = f1.lastModified();
System.out.println(time);//1684657779127
Date date = new Date(time);
System.out.println(date);//Sun May 21 16:29:39 CST 2023
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
System.out.println(sdf1.format(date));//2023年05月21日16时29分39秒
2.(创建,删除)
- public boolean createNewFile():创建一个新的空的文件
- public boolean mkdir():创建单级文件夹
- public boolean mkdirs():创建多级文件夹
- public boolean delete():删除文件、空文件夹
delete方法默认只能删除文件和空文件夹,delete方法直接删除不走回收站。
案例3:
//创建文件
File f1 =new File("E:\\aaa\\c.txt");
boolean b = f1.createNewFile();
System.out.println(b);
//创建单级文件夹
File f2 = new File("E:\\aaa\\bbb");
System.out.println(f2.mkdir());
//创建多级文件夹
File f3 = new File("E:\\aaa\\ccc\\ddd");
System.out.println(f3.mkdirs());
//删除文件
System.out.println(f1.delete());
//删除文件夹
System.out.println(f2.delete());
3.获取并遍历
- public File[] listFiles():获取当前该路径下所有内容
注意:
1.当调用者File表示的路径不存在时,返回null。
2.当调用者File表示的路径是文件时,返回null。
3.当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组。
4.当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回。
5.当调用者File表示的路径是需要权限才能访问的文件夹时,返回null。
案例4:
File f1 = new File("E:\\aaa");
File[] files = f1.listFiles();
for (File file : files) {
System.out.println(file);
}
- public static File[] listRoots():列出可用的文件系统根
- public string[ ] list():获取当前该路径下所有内容
- public string[ ] list(FilenameFilter filter):利用文件名过滤器获取当前该路径下所有内容
- public File[] listFiles(FileFilter filter):利用文件名过滤器获取当前该路径下所有内容
- public File[] listFiles(FilenameFilter filter):利用文件名过滤器获取当前该路径下所有内容
案例5:
//获取系统所有盘符
File[] arr = File.listRoots();
System.out.println(Arrays.toString(arr));
//获取当前路径下所有内容名字
File f1 = new File("E:\\aaa");
String[] arr2 = f1.list();
for (String s : arr2) {
System.out.println(s);
}
//文件过滤器
String[] arr3 = f1.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File src = new File(dir,name);
return src.isFile() && name.endsWith(".txt");
}
});
System.out.println(Arrays.toString(arr3));//[abc.txt, acb.txt]
//
File[] arr4 = f1.listFiles();
for (File file : arr4) {
if (file.isFile() && file.getName().endsWith(".txt")){
System.out.println(file);
}
}
//文件过滤器
File[] arr5 = f1.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile() && pathname.getName().endsWith(".txt");
}
});
System.out.println(Arrays.toString(arr5));
//父级路径加子级路径过滤
File[] arr6 = f1.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File src = new File(dir, name);
return src.isFile() && src.getName().endsWith(".txt");
}
});
System.out.println(Arrays.toString(arr6));