Java中的file.exists()的详细信息?

时间:2015-11-17 20:08:25

标签: java file java-io

我正在使用以下代码来检查文件是否存在并且可以用Java读取:

File sourceFile = new File(sourcePath);
if (!sourceFile.exists() || !sourceFile.canRead())
    throw new Exception("Source file is not accessible.");

但是,我想要解决的问题是确定更详细的为什么 exists()可能会或可能不会返回false。例如,可以访问该位置,但该文件不存在。或者,该位置可能被防火墙阻止,文件确实存在,只是无法访问。

是否有快速的方法来确定:

  • 无法访问文件位置(防火墙,安全性等)
  • 可以访问位置,但文件为d.n.e。
  • 文件存在,但未授予读取权。

谢谢!

2 个答案:

答案 0 :(得分:4)

使用File,你不能。

使用Path,您可以:

thePath.getFileSystem().provider().checkAccess(thePath)

javadoc link

答案 1 :(得分:0)

在exists方法和checkRead方法代码下面:

exec

Exist方法正在执行文件检查读取。

请参阅以下链接,以便使用SecurityManager将读取授予给定文件

https://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html