Java常用类库中IO的Files类

Class File

1. 构造

//表示在G盘下操作文件,注意转义字符\
File g = new File("g:\\");

2. File数组

File[] files;

3. 创建文件/目录

  • createNewFile()当且仅当具有此名称的文件尚不存在时,创建由此抽象路径名命名的新空文件。返回true表示文件已被创建, false表示文件已存在。
  • mkdir()创建此抽象路径名指定的目录。
  • mkdirs()创建此抽象路径名指定的目录,包括任何必需但不存在的父目录。
File file1 = new File("g://test/readme.md");
System.out.println(file1.createNewFile());
//创建文件readme.md,返回true

File file2 = new File("g:/test/tt/123");
System.out.println(file2.mkdirs());
//test下创建目录tt,创建目录123, 返回true

4. 删除文件(慎用)

  • delete()除此抽象路径名表示的文件或目录。
  • deleteOnExit()请求在虚拟机终止时删除此抽象路径名表示的文件或目录。

5. 文件更名

  • renameTo()重命名此抽象路径名表示的文件

6. 获取文件信息

  • String getName()返回此抽象路径名表示的文件或目录的名称。
  • String getAbsolutePath()返回此抽象路径名的绝对路径名字符串。
  • String getCanonicalPath()返回此抽象路径名的规范路径名字符串。
  • String getParent()返回此抽象路径名父项的路径名字符串,如果此路径名未指定父目录,则返回 null。
  • String toString()返回此抽象路径名的路径名字符串。
File file = new File("g://test");
file.getName();
//01.txt
file.getAbsolutePath();
//g:\test\01.txt
file.getCanonicalPath();
//G:\test\01.txt
file.getParent();
//g:\test

File file2 = new File("g:/test/tt/123");
System.out.println(file2.toString());
//g:\test\tt\123

7. 返回目录下的文件和目录信息

  • listFiles()返回一个抽象路径名数组,表示此抽象路径名表示的目录中的文件名和目录
  • list()

输出目录下文件及目录绝对地址

File file = new File("g://test");
File[] files = file.listFiles();
for (File f:files) {
    System.out.println(f.getAbsolutePath());
}
// g:\test\01.txt
// g:\test\89.txt
// g:\test\de
// g:\test\xc

输出目录下文件及目录名

File file = new File("g://test");
String[] filesName = file.list();
for (String fileName:filesName) {
    System.out.println(fileName);
}
// 01.txt
// 89.txt
// de
// xc
7.1 遍历目录及子目录包含的所有文件
  1. forEach, 需要判断子文件夹是否为空,否则会抛出空指针异常
  2. file.isFile()判断是否是文件,输出为true则是文件,输出false是文件夹
public static void listFiles(File[] files){
    if(files!=null && files.length>0){
        for (File file: files) {
            if(file.isFile()){
                //如果是文件,判断后缀名是否为.mobi
                if(file.getName().endsWith(".mobi")){
                    //判断文件是否大于50MB
                    if(file.length()>50*1024*1024){
                        System.out.println("找到了mobi文件"+file.getAbsolutePath());
                        //删除该文件
                        file.delete();
                    }
                }
            }else{
                //如果是文件夹,嵌套读取其中的文件
                File[] files2 = file.listFiles();
                listFiles(files2);
            }
        }
    }
}
7.2 使用FileFilter过滤文件
  • 方法一:
public static void listFiles(File file){
    //1.创建一个过滤器 并 描述规则(见下面 MOBIFileFilter类 继承 FileFilter 接口)
    FileFilter filter = new MOBIFileFilter();
    //2.通过文件获取子文件夹
    File[] files = file.listFiles(filter);
    if(files!=null && files.length>0){
        for (File f:files) {
            if(f.isDirectory()){
                listFiles(f);
            }else {
                System.out.println("发现一个mobi文件:"+f.getAbsolutePath());
            }
        }
    }
}

//只过滤出.mobi文件和文件夹(返回true);其他文件返回false,即不会出现在files数组中
static class MOBIFileFilter implements FileFilter {
    @Override
    public boolean accept(File pathname) {
        if(pathname.getName().endsWith(".mobi") || pathname.isDirectory())
            return true;
        return false;
    }
}
  • 方法二,创建过滤器同时使用匿名方法,规定过滤规则:
public static void listFiles(File file){

    FileFilter filter = new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            if(pathname.getName().endsWith(".mobi") || pathname.isDirectory())
                return true;
            return false;
        }
    };
    
    File[] files = file.listFiles(filter);
    if(files!=null && files.length>0){
        for (File f:files) {
            if(f.isDirectory()){
                listFiles(f);
            }else {
                System.out.println("发现一个mobi:"+f.getAbsolutePath());
            }
        }
    }
}
  • 方法三 使用 listFiles​(FileFilter filter)方法,读取目录下文件时就开始过滤
public static void listFiles(File file){

    File[] files = file.listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            if(pathname.getName().endsWith(".mobi") || pathname.isDirectory())
                return true;
            return false;
        }
    });

    if(files!=null && files.length>0){
        for (File f:files) {
            if(f.isDirectory()){
                listFiles(f);
            }else {
                System.out.println("发现一个mobi:"+f.getAbsolutePath());
            }
        }
    }
}

8. 获取文件大小

  • length()返回此抽象路径名表示的文件的长度。
//01.txt大小为69字节
File file1 = new File("g:/test/01.txt");
System.out.println(file1.length());
//69

9. 比较

  • int compareTo()按字典顺序比较两个抽象路径名
  • boolean equals()测试此抽象路径名与给定对象的相等性。
  • boolean exists()测试此抽象路径名表示的文件或目录是否存在。
File file1 = new File("G:\\UOB Y2TB1\\Activity\\BUDS1");
System.out.println(file1.exists());
//true

10. 判断是否为文件/目录

  • isFile()测试此抽象路径名表示的文件是否为普通文件。
  • isDirectory()测试此抽象路径名表示的文件是否为目录。
  • isHidden()测试此抽象路径名指定的文件是否为隐藏文件。

11. 权限判断

  • boolean canExecute()测试应用程序是否可以执行此抽象路径名表示的文件。
  • boolean canRead()测试应用程序是否可以读取此抽象路径名表示的文件。
  • boolean canWrite测试应用程序是否可以修改此抽象路径名表示的文件。
System.out.println(f.canExecute());
//true
System.out.println(f.canRead());
//true
System.out.println(f.canWrite());
//true

12. 设置操作权限

  • setExecutable​(boolean executable)一种方便的方法,用于设置此抽象路径名的所有者执行权限。
  • setLastModified​(long time)设置此抽象路径名指定的文件或目录的上次修改时间。
  • setReadable​(boolean readable)一种方便的方法,用于设置此抽象路径名的所有者读取权限。
  • setReadOnly()标记此抽象路径名指定的文件或目录,以便仅允许读取操作。
  • setWritable​(boolean writable)一种方便的方法,用于设置此抽象路径名的所有者写入权限。

fied​(long time)```设置此抽象路径名指定的文件或目录的上次修改时间。

  • setReadable​(boolean readable)一种方便的方法,用于设置此抽象路径名的所有者读取权限。
  • setReadOnly()标记此抽象路径名指定的文件或目录,以便仅允许读取操作。
  • setWritable​(boolean writable)一种方便的方法,用于设置此抽象路径名的所有者写入权限。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值