你一定要会的JavaFile

  • 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));
复制代码

结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值