来自oracle的this java教程:
注意!Files.exists(path)不等同于 Files.notExists(路径)。
为什么它们不相同?它在解释方面没有进一步说明。 有人知道更多相关信息吗? 提前谢谢!
答案 0 :(得分:10)
!Files.exists()
返回:
true
如果文件不存在或无法确定其存在false
Files.notExists()
返回:
true
如果文件不存在false
如果文件存在或无法确定其存在答案 1 :(得分:3)
我们从Files.exists看到的结果是:
TRUE if the file exists;
FALSE if the file does not exist or its existence cannot be determined.
从Files.notExists开始,返回的结果是:
TRUE if the file does not exist;
FALSE if the file exists or its existence cannot be determined
因此,如果!Files.exists(path)
返回TRUE
表示它不存在或无法确定存在(2种可能性),而Files.notExists(path)
则返回TRUE
表示它不存在(仅1)可能性)。
结论!Files.exists(path) != Files.notExists(path)
或2 possibilities not equals to 1 possibility
(参见上文关于可能性的解释)。
答案 2 :(得分:3)
在源代码中查找差异,他们两者完全相同,只有一个主要区别。 notExist(...)
方法有一个额外的例外被捕获。
存在:
public static boolean exists(Path path, LinkOption... options) {
try {
if (followLinks(options)) {
provider(path).checkAccess(path);
} else {
// attempt to read attributes without following links
readAttributes(path, BasicFileAttributes.class,
LinkOption.NOFOLLOW_LINKS);
}
// file exists
return true;
} catch (IOException x) {
// does not exist or unable to determine if file exists
return false;
}
}
不存在:
public static boolean notExists(Path path, LinkOption... options) {
try {
if (followLinks(options)) {
provider(path).checkAccess(path);
} else {
// attempt to read attributes without following links
readAttributes(path, BasicFileAttributes.class,
LinkOption.NOFOLLOW_LINKS);
}
// file exists
return false;
} catch (NoSuchFileException x) {
// file confirmed not to exist
return true;
} catch (IOException x) {
return false;
}
}
结果差异如下:
!exists(...)
,则 IOException
会将文件返回为不存在。
notExists(...)
通过确保抛出特定的IOException
子例外NoSuchFileFound
并且IOException
上没有任何其他子例外,将文件返回为不存在导致未找到结果
答案 3 :(得分:1)
来自notExists
的{{3}}。
请注意,此方法不是exists方法的补充。 如果无法确定文件是否存在,则两种方法都返回false 。 ...
我的重点。
答案 4 :(得分:0)
你可以指定绝对路径,如果目录/目录没有退出,它将创建drectory /目录。
private void createDirectoryIfNeeded(String directoryName)
{
File theDir = new File(directoryName);
if (!theDir.exists())
theDir.mkdirs();
}
答案 5 :(得分:0)
import java.io.File;
// Create folder
boolean isCreate = new File("/path/to/folderName/").mkdirs();
// check if exist
File dir = new File("/path/to/newFolder/");
if (dir.exists() && dir.isDirectory()) {
//the folder exist..
}
还可以检查if Boolean variable == True
,但是这种检查更好,更有效。