Java IO(一)File

本文详细介绍了Java中File类的使用,包括如何创建、访问和删除文件及目录。通过示例代码展示了File对象如何获取文件属性、创建新文件、创建目录、删除目录以及列出目录中的子项。此外,还演示了如何根据特定条件筛选目录中的文件。

File类

File类的每一个实例可以表示硬盘(文件系统)中的一个文件或目录(实际上表示的是一个抽象路径)
使用File可以做到:
1.访问其表示的文件或目录的属性信息,例如:名字、大小、修改时间等等
2.创建和删除文件或目录
3.访问一个目录中的子项
但是File不能访问文件数据。

public class FileDemo {
    public static void main(String[] args) {
        // 使用FIle访问当前项目目录下的demo.txt文件
        /*
            创建File时要指定路径,而路径通常是相对路径。
            相对路径的好处在于有良好的跨平台性。
            “./”是相对路径中使用的最多的,表示“当前目录”,而当前目录是哪里
            取决于程勋的运行环境而定,在idea中运行java程序时,这里的指定的
            当前目录就是当前程序所在的项目目录。
         */
        File file = new File("demo.txt");
        // 获取名字
        String name = file.getName();
        System.out.println(name);
        // 获取文件大小(字节)
        long length = file.length();
        System.out.println(length + "字节");
        // 是否可读写
        boolean cr = file.canRead();
        boolean cw = file.canWrite();
        System.out.println("是否可读:" + cr);
        System.out.println("是否可写:" + cw);
        // 是否隐藏
        boolean ih = file.isHidden();
        System.out.println("是否隐藏:" + ih);
    }
}

创建新文件

createNewFile()可以创建一个文件。

public class CreateNewFileDemo {
    public static void main(String[] args) {
        // 在当前目录下创建一个文件test.txt
        File file = new File("./test.txt");
        // boolean exists()判断当前File表示的位置是否已存在该文件或目录
        if (file.exists()) {
            System.out.println("该文件已存在!");
        } else {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println("文件已创建!");
        }
    }
}

创建目录

mkDir():创建当前File表示的目录
mkDirs():创建当前File表示的目录,同时将所有不存在的父目录一同创建

public class MkDirDemo {
    public static void main(String[] args) {
        File dir = new File("./a/b/c/d");

        if (dir.exists()) {
            System.out.println("该目录已存在!");
        } else {
            dir.mkdirs();
            System.out.println("目录已创建");
        }
    }
}

删除目录

delete()方法可以删除一个目录,但是只能删除空目录。

public class DeleteFileDemo {
    public static void main(String[] args) {
        // 将当前目录下的demo目录删除
        File dir = new File("demo");
        if (dir.exists()) {
            dir.delete();
            System.out.println("目录已删除");
        } else {
            System.out.println("目录不存在");
        }
    }
}

访问一个目录中的所有子项

listFiles()方法可以访问一个目录中的所有子项

public class ListFileDemo1{
    public static void main(String[] args) {
        File file = new File(".");
        /*
            boolean isFile()
            判断当前File表示的是否为一个文件
            boolean isDirectory()
            判断当前File表示的是否为一个目录
         */
        if (file.isDirectory()) {
            /*
                File[] listFiles()
                将当前目录中的所有子项返回。返回的数组中每个File实例表示其中的一个子项
             */
            File[] subs = file.listFiles();
            System.out.println(String.format("当前目录包含【%d】个子项", subs.length));
            for (int i = 0; i < subs.length; i++) {
                File sub = subs[i];
                System.out.println(sub.getName());
            }
        }
    }
}

获取目录中符合特定条件的子项

重载的listFiles方法:File[] listFiles(FileFilter)
该方法要求传入一个文件过滤器,并仅将满足该过滤器要求的子项返回。

public class ListFileDemo2 {
    public static void main(String[] args) {
        /*
            获取当前目录,以“.”开头
         */
        File dir = new File(".");
        if (dir.isDirectory()) {
            File[] files = dir.listFiles(new FileFilter() {
                @Override
                public boolean accept(File file) {
                    return file.getName().startsWith(".");
                }
            });
            System.out.println(files.length);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值