学习笔记:File类

File类是java.io包下代表与平台无关的文件和目录(是文件和文件目录路径的抽象表示),也就是说,在程序中操作文件和目录,都可以通过File类完成,主要用于文件和目录的创建、查找和删除等。需要注意的是,File不能访问文件内容本身,如果需要访问文件内容本身,则需要使用  输入/输出流(IO流)。

正式介绍File类之前,有关文件路径中的"/"做一个说明:在java中路径一般用"/";在windows中的路径一般用“\”;所以在java中写windows路径一般用“/”,或将“\”转义,变产“\”(IntelliJ IEDA工具中会自动转义)。

1. File类的常用构造方法

File类可以使用文件路径字符串来创建File实例

    • Constructor 描述
      File​(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例
      File​(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例
      File​(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例

路径的说明:   绝对路径:从盘符开始的路径,这是一个完整的路径;       相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用

        File file2 = new File("f:\\test");
        System.out.println(file2);

        File file3 = new File("f:/test");
        System.out.println(file3);

        //2. File(String parent,String child)  parent + child
        File file4 = new File("f:/test", "a.txt");
        System.out.println(file4);

        //File(File parent,String child)   parent + child
        File file5 = new File(file2, "a.txt");
        System.out.println(file5);

2. 访问文件名相关的方法 

String getName():   返回此File对象所表示的文件名或路径名(如果是路径,则返回最后一级子路径名)

String getPath():   返回次File对象所对应的路径名。

String getAbsoluteFile():   返回此File对象对应的绝对路径名。

        File file = new File("a.txt");
        File file1 = new File("f:\\test");
        //String getName():  
        System.out.println(file.getName());
        System.out.println(file1.getName());
        //String getPath(): 
        System.out.println(file.getPath());
        System.out.println(file1.getPath());
        //String getAbsoluteFile():  
        System.out.println(file.getAbsolutePath());
        System.out.println(file1.getAbsolutePath());

3. 文件检测相关的方法

boolean exists():   判断File对象所对应的文件或目录是否存在。

boolean isFile():   判断File对象所对应的是否是文件,而不是目录。

boolean isDirectory():    判断File对象所对应的的是否是目录,而不是文件。

        File file = new File("f:/test");
        File file1 = new File("a.txt"); //项目根目录存在
        //boolean exists(): 
        System.out.println(file.exists());
        System.out.println(file1.exists());
       // boolean isFile(): 
        System.out.println(file.isFile());
        System.out.println(file1.isFile());
       // boolean isDirectory(): 
        System.out.println(file.isDirectory());
        System.out.println(file1.isDirectory());

4. 获取常规文件信息

long length():   返回文件内容的长度

5. 文件操作相关的方法

boolean createNewFile():   当此File对象所对应的文件不存在时,该方法将新建一个该File对象所指定的新文件,如果创建成功则返回true,否则返回false。

         File file = new File("f:/test/a/a.txt");
        //如果父路径不存在则会抛出异常
        //boolean result = file.createNewFile();
        //System.out.println(result);

        //父路径是否存在
        File parentFile = file.getParentFile();
        if (parentFile.exists()) {
            boolean result = file.createNewFile();
            System.out.println(result);
        }

        File file2 = new File("f:/test/c/a");
        //boolean result2 = file2.mkdir();
        boolean result2 = file2.mkdirs();
        System.out.println(result2);

boolean delete():   删除File对象所对应的文件或路径。

        File file = new File("f:/test/a");
        boolean delete = file.delete();
        System.out.println(delete);

6. 目录操作相关的方法

boolean mkdir():   试图创建一个File对象所对应的目录,如果创建成功,则返回true;否则返回false。调用该方法时File对象必须对应一个路径,而不是一个文件,并且,其父目录也是必须存在的;

boolean mkdirs():   创建此抽象路径名指定的目录,包括所有必需但不存在的父目录

String[] list():   列出File对象的所有子文件名和路径名,返回String数组。

File[] listFiles():   列出File对象的所有子文件和路径,返回File数组。

 

文件过滤器

在File类的list() 方法中可以接收一个FilenameFilter参数,通过该参数可以只列出符合条件的文件。

//创建一个File实例
        File file = new File("C:\\Users\\LiuJinmai\\Desktop\\aa");
        //使用匿名内部类,重写过滤器方法
        File[] list = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                //获取文件名,过滤后缀名为.png的文件
                if (pathname.getName().endsWith(".png")){
                    return true;
                }
                return false;
            }
        });
        //打印过滤后的list
        for (File f : list) {
            System.out.println(f);
        }

猜你喜欢

转载自blog.csdn.net/weixin_38816084/article/details/82809561