(6) 文件管理

(六) 文件管理

(1)File类封装了在用户机器上处理文件系统所需的所有功能。但是,可以查询一个文件是否是隐藏文件,却不能在不使用本地方法的情况下将其隐藏。
(2)File对象最简单的构造将接受一个(完全的)文件名,如果没有提供路径名,将使用当前路径。File file =  new File("test.txt"); 将提供一个在当前目录下具有这个名字的文件对象。("当前目录"是执行虚拟机的进程的当前目录,如果是通过命令行启动虚拟机的,那么它就是你启动java可执行文件的目录)
(3)File.separator:因为反斜线\在java字符串中是转义字符,所以在windows中使用\\。也可以使用单斜线/。考虑到可移植性,应该使用程序运行平台所使用的文件分隔符,以常理字符串File.separator的形式存储的。
(4)构造器的调用不会在指定文件不存在的情况下创建一个具有指定文件名的文件。从File对象中创建文件是由文件流类的构造器或File类中的createNewFile方法完成的。createNewFile只有具体指定文件名的文件不存在的情况下才会创建文件,并返回boolean值,说明文件是否创建成功。
(5)通过File类中的exist方法查询该File对象是否存在。
(6)File对象其他两个构造器:File(String path, String name) 和 File(File dir, String name) ,如果path或dir为null,该构造器就会在当前目录创建File对象。
(7)File对象即可表示文件,也可以表示目录。通过isDirectory或isFile方法了解该File对象是目录还是文件。
(8)让一个对象表示目录,只需要在File构造器中提供目录名(同文件) File tempDir = new File(File.separator + "temp");
(9)如果目录不存在通过mkdir方法创建它 tempDir.mkdir()
(10)如果一个File对象是目录,使用list方法可以获得这个目录下得文件名构成的数组。
(11)处理文件或目录名时应该使用File对象而不是字符串,这样有许多好处,比如File类的equals方法知道某些文件系统不是大小写敏感的,或者在目录名尾部的(是无关紧要的)
(12)可以使用实现FilenameFilter对象作为list方法的参数,过滤满足条件的对象。

e.g.根据扩展名过滤文件

    public class ExtensionFilter implements FilenameFilter{
        
        private String extension;
        
        public ExtensionFilter(String extension){
            this.extension = extension;
        }
        
        public boolean accept(File dir, String name){
            return name.endsWith(extension);
        }
    }