File对象不仅可以表示文件,还可以表示目录,源码注释是这么说的:An abstract representation of file and directory pathnames。
File类最常用的构造方法是File(String pathname),其中pathname对应的文件或者目录可以存在也可以不存在。如果pathname是相对路径,即不带盘符且不以斜杠开始,则系统是根据用户的工作路径来解释相对路径的。何为工作路径?即System.getProperty("user.dir")的值,简单来讲就是这个项目所在的路径。如果pathname是以盘符开始的绝对路径,则只能运行在windows系统上,生成的file对象的绝对路径就是pathname。如果pathname是以斜杠开始的绝对路径,则既可以运行在windows系统上,也可以运行在linux系统上。运行在windows系统上的话,生成的file对象的绝对路径是项目所在盘+pathname,如D:/pahname;运行在linux系统上的话,生成的file对象的绝对路径就是pathname。
常用的File对象的方法:
long lastModified();返回File对象对应的文件或者目录的最后修改时间,可以包装成Date对象。如果File对象对应的文件或者目录不存在,则返回0
long length();返回File对象对应的文件或者目录的大小,以byte为单位
String getAbsolutePath();返回File对象的绝对路径
boolean exists();判断File对象对应的文件或目录是否存在
boolean isFile();boolean isDirectory();判断File对象对应的是文件还是目录,调用这两个方法前首先要保证此File对象对应的文件或目录存在,否则这两个方法都会返回false。值得注意的是,有扩展名的不一定是文件哦,也可能是目录,目录名也允许有点存在。
boolean createNewFile();创建文件。当File对象对应的是文件且不存在时,可以调用此方法创建
boolean mkdirs();创建多级目录。当File对象对应的是目录且不存在时,可以调用此方法创建
boolean delete();删除File对象指定的文件或者目录,删除成功返回true,不成功返回false。删除文件时,如果文件正在被使用,则不会删除成功。删除目录时,目录是空的才能成功。
deleteOnExit();JVM结束时删除File对象,没有返回值
File[] listFiles();获得File对象对应的目录下的所有文件和目录,要求File对象对应的是目录且必须存在,不能是文件,也不能不存在,否则得到的会是null