File类

1、静态常量
static String pathSeparator 与系统相关的路径分隔符字符,为方便起见,表示为字符串。
static String separator 与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。

String pathSeparator = File.pathSeparator;
String separator = File.separator;
System.out.println(pathSeparator); //返回windows ; linux :
System.out.println(separator); //返回Window \ linux /

2、构造方法
路径可以是绝对路径,也可以是相对路径,可以存在也可以不存在
File(String pathname)
File(File parent, String child)
File(String parent, String child)

File file = new File("/Users/Downloads");
    System.out.println(file.toString());

    File file1 = new File("/Users/Downloads", "1.txt");
    System.out.println(file1.toString());

    File parent = new File("/Users/Downloads");
    File file2 = new File(parent, "2.txt");
    System.out.println(file2.toString());

3、相对路径绝对路径
绝对路径:带盘符的路径,唯一, c:\a\1.txt
相对路径:不带盘符,不唯一
同一个文件夹下:直接引用名字 b.txt
下一级文件夹下:ccc\c.txt
上一级目录:…\a.txt
idea中所有的相对路径都是相对于当前的project的

4、常用方法
public boolean createNewFile()
当且仅当具有该名称的文件不存在时,创建一个新的空文件

public static void main(String[] args)throws IOException {
  File file = new File("/Users/daiyuanru/Downloads/1.txt"); //此方法只能创建文件,不能创建文件夹
  boolean b=file.createNewFile(); //如果当前位置有这个文件,创建成功返回true,如果没有,创建失败返回false
  System.out.println(b);

public boolean mkdir()
创建由此File表示的目录,此方法只能创建单级文件夹,如果想要创建多级文件夹,使用mkdirs()方法

  public static void main(String[] args)throws IOException {
        File dir = new File("/Users/daiyuanru/Downloads/aa"); //此方法只能创建文件夹,不能创建文件
        boolean b=dir.mkdir(); //如果当前位置有这个文件夹,创建成功返回true,如果没有,创建失败返回false
        System.out.println(b);

public boolean mkdirs() 创建由此File表示的目录,包括任何必需但不存在的父目录(多级)

public boolean delete()此方法可以删除文件,也可以删除文件夹,但是只能删除空文件夹,多级的文件夹不行,直接删除,不走回收站

public boolean exists()判断路径是否存在
public boolean isFile()判断是否是文件,这个方法会优先判断路径是否存在,然后再考虑是否是文件
public boolean isDirectory()判断是否是文件夹,同理先判断路径

public String getAbsolutePath()返回此File的绝对路径字符串
public String getPath()返回构造方法给出的路径
public String getName()返回由此File表示的文件或目录名称
public longlength()返回由此File表示的文件字节数,文件不存在也有可能为0字节
public File getParentFile()返回由此File表示的文件或目录的父目录,如果没有父目录,就返回null

String[ ] list()获取指定文件夹下,所以文件和文件夹的名字

File[ ] listFiles()获取指定文件夹下所有的File对象,如果路径不存在,或者路径是文件,返回null值,会报空指针异常
File[ ] listFiles(FileFilter filter)
返回一个数组,满足指定过滤器的目录中的文件和目录

public class MyFileFilter implements FileFilter {
    @Override
    public boolean accept(File pathname) {
    //返回的是以.txt结尾的文件
        return pathname.getName().toLowerCase(Locale.ROOT).endsWith(".txt");
        
    }
}
public static void main(String[] args) throws IOException {
    File file = new File("/Users/Downloads/");
    File[] files = file.listFiles(new MyFileFilter());
    //accept方法返回true则将文件放入files,如果返回false则不放
    for (File thisFile : files) {
        System.out.println(thisFile.getName());
    }
}

5、递归获取多级文件
递归的注意事项:
1、递归一定要有出口,否则就是死递归
2、递归次数不能过多,会造成内存溢出
3、构造方法不能递归

    public static void main(String[] args) throws IOException {
        File file = new File("/Users/Downloads/");
        show(file);
    }

    public static void show(File file) {
        File[] files = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
            //是文件夹就返回true
                if (pathname.isDirectory()) {
                    return true;
                }
                //不是文件夹,如果末尾是txt结尾,就返回true
                return pathname.getName().toLowerCase(Locale.ROOT).endsWith(".txt");
            }
        });
        for (File thisFile : files) {
            if (thisFile.isDirectory()) {
            //是文件夹就递归
                show(thisFile);
            } else {
                System.out.println(thisFile);
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值