IO流 - File()文件的相关知识

wangxiaojian-lina / 2024-10-23 / 原文

File文件

    File【文件】: 是计算机中所有文件的抽象表示, 将来File对象目标可能存在,也可能不存在。

    构造方法:
        public File(String pathname)
        public File(String parent,String child)
        public File(File parent,String child)

    路径:
        绝对路径【完整路径】:D:\projects\IdeaProjects\bigdara32\java\src\com\shujia\day15\ketang\a1.txt
        相对路径:java/src/com/shujia/day15/ketang/a1.txt
点击查看代码
public class FileDemo1 {
    public static void main(String[] args) {
        File file = new File("java/src/com/shujia/day15/FileDemo1.java");
        System.out.println(file);

        System.out.println("================================");

        File file1 = new File("java/src/com/shujia/day15", "FileDemo1.java");
        System.out.println(file1);
        System.out.println("================================");
        File file2 = new File("java/src/com/shujia/day15");
        File file3 = new File(file2, "FileDemo1.java");
        System.out.println(file3);
    }
}

基本功能

    创建功能
        public boolean createNewFile()
        public boolean mkdir()
        public boolean mkdirs()
    删除功能
        public boolean delete()
    重命名功能
        public boolean renameTo(File dest)
点击查看代码

public class FileDemo2 {
    public static void main(String[] args) throws Exception{
        File file1 = new File("src/com/shujia/day15/a.txt");
//        public boolean createNewFile()创建一个文件

        System.out.println(file1.createNewFile());
        File file2 = new File("src/com/shujia/day15/aafu");
//        public boolean mkdir() 创建单极文件夹
        System.out.println(file2.mkdir());

        System.out.println("============================");

        File file3 = new File("src/com/shujia/day15/bbb/bb/b");

//        public boolean mkdirs();创建多级文件夹

          System.out.println(file3.mkdirs());
//        删除功能
//        public boolean delete()只能删除空文件夹,或一个文件
//        System.out.println(file1.delete());
//        System.out.println(file2.delete());
          System.out.println(file3.delete());


//            重命名功能
//        public boolean renameTo(File dest)
        File file5 = new File("src/com/shujia/day15/student.txt");
        System.out.println(file1.renameTo(file5));
    }
}

    判断功能
        public boolean isDirectory()
        public boolean isFile()
        public boolean exists()
        public boolean canRead()
        public boolean canWrite()
        public boolean isHidden()
点击查看代码
//        public boolean isDirectory()
//判断他是否是一个文件夹
        File file = new File("src/com/shujia/day15/student.txt");
        System.out.println(file.isDirectory());
//    public boolean isFile()  判断是否为一个文件
        System.out.println(file.isFile());
//        public boolean exists()
        System.out.println(file.exists());
//        public boolean canRead()
        System.out.println(file.canRead());
//        public boolean canWrite()
        System.out.println(file.canWrite());
//        public boolean isHidden() 是否是隐藏的
        System.out.println(file.isHidden());
    基本获取功能
        public String getAbsolutePath()
        public String getPath()
        public String getName()
        public long length()
        public long lastModified()
点击查看代码
        File file = new File("src/com/shujia/day15/student.txt");
        String path1 = file.getAbsolutePath();  //获取文件的绝对路径
        System.out.println(path1);
        String path2 = file.getPath();//获取文件的相对路径
        System.out.println(path2);
        String name = file.getName();//获取文件的名字
        System.out.println(name);
        long length = file.length();
        System.out.println(length);//该文件的长度
        //public long lastModified() 获取上一次修改的时间戳【毫秒级别的】
//        System.out.println(file.lastModified());
        System.out.println(file.lastModified());
        String time = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 a").format(new Date(file.lastModified()));
        System.out.println(time);
        高级获取功能
        public String[] list()
        public File[] listFiles()
点击查看代码
        File file = new File("src/com/shujia/day15");
        //public String[] list() 将目录下所有的文件以及文件夹的  名字放到一个数组中返回
        String[] list = file.list();

            if(list != null){
                for (String s : list) {
            System.out.println(s);
                }
        }
        //public File[] listFiles() 将目录下所有的文件以及文件夹都封装成一个一个的File对象放到一个数组中
        File[] files = file.listFiles();
        if(list != null){
            for (File file1 : files) {
                System.out.println(file1);
            }
        }

/需求:获取day15目录下所有.txt后缀的文件(两种方法)

点击查看代码
    public static void main(String[] args){
        File file1 = new File("src/com/shujia/day15");
        File[] file = file1.listFiles();
        if(file!=null){
            for (File f : file) {
                if(f.isFile() && f.getName().endsWith(".txt")){
                    System.out.println(f);
                }
            }
        }
    }
    public String[] list(FilenameFilter filter)
    public File[] listFiles(FilenameFilter filter)  文件名称过滤器的实现思想及代码
点击查看代码
    public static void main(String[] args) {
        File file1 = new File("src/com/shujia/day15");
        File[] files = file1.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                File f = new File(dir, name);
                return f.isFile()&&f.getName().endsWith(".txt");
            }
        });
        for (File file : files) {
            System.out.println(file);

        }
    }