- File对象就表示一个路径,可以是文件的路径,也可以是文件夹的路径
- 这个路径可以是存在的,也允许是不存在的
File的构造
方法名称 | 说明 |
---|---|
public File(String pathname) | 根据文件路径创建文件对象 |
public File(String parent,String child) | 根据父路径名字符串和子路径名字符串创建文件对象 |
public File(File parent,String child) | 根据父路径对应文件对象和子路径名字符串创建文件对象 |
public File(String pathname)
1.根据字符串表示的路径,变成File对象
String str = "C:\\Users\\jc\\Desktop\\长生剑客.txt";
File file = new File(str);
System.out.println(file);
复制代码
public File(String parent,String child)
2.根据父路径名字符串和子路径名字符串创建文件对象
String parent = "C:\\Users\\jc\\Desktop";
String child = "长生剑客.txt";
File file1 = new File(parent, child);
System.out.println(file1);
复制代码
public File(File parent,String child)
3.根据父路径对应文件对象和子路径名字符串创建文件对象
File parent2 = new File("C:\\Users\\jc\\Desktop");
String child2 = "长生剑客.txt";
File file2 = new File(parent2, child2);
System.out.println(file2);
复制代码
结果:
File常见的成员方法
判断、获取
方法名称 | 说明 |
---|---|
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() | 返回文件的最后修改时间(时间毫秒值) |
1.对一个文件的路径进行判断
File file = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹\\长生剑客.txt");
System.out.println(file.isDirectory());
System.out.println(file.isFile());
System.out.println(file.exists());
复制代码
2.对一个文件夹进行判断
File file1 = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹");
System.out.println(file1.isDirectory());
System.out.println(file1.isFile());
System.out.println(file1.exists());
复制代码
3.对一个不存在的路径进行判断
File file2 = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹\\拜拜.txt");
System.out.println(file2.isDirectory());
System.out.println(file2.isFile());
System.out.println(file2.exists());
复制代码
结果
1.length 文件大小(字节数)
只能获取文件的大小,单位是字节
File file = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹\\长生剑客.txt");
long len = file.length();
System.out.println(len);
复制代码
2.getAbsolutePath
File file1 = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹\\长生剑客.txt");
String path = file1.getAbsolutePath();
System.out.println(path);
复制代码
在项目里添加一个 长生剑客.txt的文件
File file2 = new File("JavaFile\\长生剑客.txt");//相对路径
String path2 = file2.getAbsolutePath();
System.out.println(path2);
复制代码
3.getPath返回定义文件时使用的路径
File file3 = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹\\长生剑客.txt");
String path3 = file3.getPath();
System.out.println(path3);
File file4 = new File("JavaFile\\长生剑客.txt");//相对路径
String path4 = file4.getPath();
System.out.println(path4);
复制代码
4.getName获取名字
- 如果是文件,返回的是文件名和文件的后缀
- 如果是文件夹,返回的是文件夹名
File file5 = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹\\长生剑客.txt");
String name = file5.getName();
System.out.println(name);
复制代码
5.lastModified 返回文件的最后修改时间(毫秒)
File file6 = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹\\长生剑客.txt");
long time = file6.lastModified();
System.out.println(time);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date date = new Date(time);
String str = simpleDateFormat.format(date);
System.out.println(str);
复制代码
创建、删除
方法名称 | 说明 |
---|---|
public boolean createNewFile() | 创建一个新的空的文件 |
public boolean mkdir() | 创建单级文件夹 |
public boolean mkdirs() | 创建多级文件夹 |
public boolean delete() | 删除文件、空文件 |
1.创建一个新的文件
File file = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹\\c.txt");
boolean b = file.createNewFile();
System.out.println(b);
复制代码
结果:
创建了一个c.txt的文件 注意:
- 如果当前路径表示的文件夹是不存在的,则创建成功,方法返回true
- 如果当前路径表示的文件夹是存在的,则创建失败,方法返回false 比如再运行上面的代码:
2.mkdir make Directory 文件夹(目录)
File file1 = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹\\XYG");
boolean c = file1.mkdir();
System.out.println(c);
复制代码
结果:
注意:
- Windows当中路径是唯一的,如果当前路径已经存在,则创建失败,返回false
- mkdir方法只能创建单机文件夹,无法创建多级文件夹
3.mkdirs 创建多级文件夹
File file2 = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹\\XYG\\张大仙\\秀豆");
boolean d = file2.mkdirs();
System.out.println(d);
复制代码
结果:
创建结果:
4.delete删除
File file = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹\\XYG\\张大仙\\秀豆");
boolean b = file.delete();
System.out.println(b);
复制代码
结果:
注意:
- 如果删除的是文件,则直接删,不走回收站
- 如果删除的是空文件夹,则直接删,不走回收站
- 如果删除的是有内容的文件夹,则删除失败
获取并遍历
方法名称 | 说明 |
---|---|
public File[] listFiles() | 获取当前该路径下所有内容 |
1.创建File对象
File file = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹");
复制代码
2.listFiles方法
File[] files = file.listFiles();
复制代码
3.temp依次输出长生剑客文件夹内的所有内容
for (File temp : files) System.out.println(temp);
复制代码
4.结果
重点
- 当调用者File表示的路径不存在时,返回null
- 当调用者File表示的路径是文件时,返回null
- 当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组
- 当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中
- 当调用者File表示的路径有隐藏文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件夹
- 当调用者File表示的路径是想要权限才能访问的文件夹时,返回null
获取并遍历
方法名称 | 说明 |
---|---|
public static File[] listRoots() | 列出可用的文件系统根 |
public String[] list() | 获取当前该路径下所有内容 |
public String[] list(FilenameFilter filter) | 利用文件名过滤器获取当前该路径下所有内容 |
public File[] listFiles() | 获取当前该路径下所有内容 |
public File[] listFiles(FileFilter filter) | 利用文件名过滤器获取当前该路径下所有内容 |
public File[] listFiles(FilenameFilter filter) | 利用文件名过滤器获取当前该路径下所有内容 |
1.listRoots 获取系统中所有的盘符
File[] arr = File.listRoots();
System.out.println(Arrays.toString(arr));
复制代码
2.list() 获取当前路径下所有内容(仅仅能获取名字)
File file = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹");
String[] arr2 = file.list();
for (String s : arr2) System.out.println(s);
复制代码
3.list(FilenameFilter filter) 利用文件名过滤器获取当前该路径下所有内容
File file1 = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹");
String[] arr3 = file1.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));
复制代码
4.File[] listFiles(FileFilter filter) 利用文件名过滤器获取当前该路径下所有内容
File file = new File("C:\\Users\\jc\\Desktop\\长生剑客的文件夹");
File[] arr = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile() && pathname.getName().endsWith(".txt");
}
});
System.out.println(Arrays.toString(arr));
复制代码
结果:
5.调用listFiles(FilenameFilter filter)
File[] files = file.listFiles(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(files));
复制代码
结果: