对getParentFile()的理解
起因
开发中常常会有一种场景:上传文件。构建好完整路径,需要确保文件的目录是存在的,如果不存在就创建目录。
有以下代码:
if(file.getParentFile()!=null || !file.getParentFile().isDirectory()){
file.getParentFile().mkdirs();
}
但是判断条件让我很不明白,一度困扰了很久。
解释
getParentFile()
获取实例对象的父项的实例对象,如果此路径名未指定父目录,则返回null;也就是获取对象的上级目录然后再实例化一个对象;
file.getParentFile()!=null
判断的是file有没有父路径。
getParentFile()获取的是当前文件的文件夹,而这个文件夹是否存在取决于你要创建的文件的路径中是否有文件夹,如new File("newFile")就是不存在文件夹,而new File("/direct/newFile")就存在文件夹,这是肯定是存在文件夹的去调用mkdirs()去创建文件夹了。
但我还是不懂,暂且留着吧,想不通。
第二个是否为目录。考虑到目录不存在时候,isDirectory为false,因此取反的情况下为true,才可以创建目录。