创建出file类的对象并不代表该路径下有此文件或目录。
用public boolean
exists()可以判断文件是否存在。
file类的对象可以是目录或者文件。
如果是目录,public boolean isdirectory()返回true;
如果是文件(非目录则是文件),public boolean isfile()返回true;
但是注意需要先判断文件是否存在,如果文件不存在,上面两个方法都返回false,即不存在的file类对象既不是文件也不是目录。
public boolean
createnewfile()会创建一个新的空文件,只有该文件不存在的时候会创建,如果文件已经存在的话则返回false。
public boolean mkdir()
创建目录,成功返回true。只能创建一个文件夹,要求所有的父目录都存在,否则创建失败。
public boolean mkdirs()
创建目录,成功返回true,会创建所有不存在的父目录。(注意即便最后创建失败,但是也可能创建了一些中间目录)。
上面两个方法如果要创建的目录已经存在,不再重新创建,都返回false,只有新建目录返回true。
列出目录中的文件有以下方法可选:
string[] list()
string[] list(filenamefilter
filter)
返回文件名数组。
file[] listfiles()
file[] listfiles(filefilter
file[] listfiles(filenamefilter
返回file数组。
参数是文件或者文件名过滤器。
注意返回为空和返回为null的意义是不同的。
若不包含(符合条件的)文件,返回为空。
但是如果返回为null,则表明调用方法的file对象可能不是一个目录,或者发生了io错误。
boolean delete()方法会删除文件,如果file对象是文件则直接删除,对于目录来说,如果是空目录则直接删除,非空目录则无法删除,返回false。
如果要删除的文件不能被删除则会抛出ioexception。
注意:不论是创建文件、创建目录还是删除文件,只有在动作真正发生的时候会返回true。
在项目中写一些工具类包装通用操作是很有必要的,看了一下apache的fileutils类,copy了一些方法出来:
fileutils.java
file类官方文档:
org.apache.commons.io.fileutils源码:
本博客旧博文: