Java 为什么file.exists()失败?
我检查并打印了路径,路径存在,但它找不到文件。我在本地上尝试了这段代码,它成功了,但我不确定原因是什么(在Java中)Java 为什么file.exists()失败?,java,Java,我检查并打印了路径,路径存在,但它找不到文件。我在本地上尝试了这段代码,它成功了,但我不确定原因是什么(在Java中) 你的代码很好,你需要检查你的文件。确保您的文件实际上是test.html。有时,文件可能以扩展名命名,但实际上是不同类型的文件。例如,您的文件实际上可能是 test.html.html 但会以 test.html 如果使用Windows在本地计算机上测试,请注意文件名不区分大小写。如果您的服务器基于Linux/Unix平台,则文件名将区分大小写 请仔细检查。我可以想出三种可能的
你的代码很好,你需要检查你的文件。确保您的文件实际上是test.html。有时,文件可能以扩展名命名,但实际上是不同类型的文件。例如,您的文件实际上可能是 test.html.html 但会以 test.html
如果使用Windows在本地计算机上测试,请注意文件名不区分大小写。如果您的服务器基于Linux/Unix平台,则文件名将区分大小写
请仔细检查。我可以想出三种可能的解释来解释你所看到的:
的javadoc exists()表示:
测试此抽象路径名表示的文件或目录是否存在
如果路径名是断开符号链接的名称,则路径表示的文件或目录不存在。(如果您试图用Java打开它,您将得到一个IOException。)
FolderA
上的权限使程序无法读取它,exists()
将必须为整个路径返回false
前两种理论可以通过检查涉及的文件和目录进行检验 第三种方法需要使用一些工具检查源代码和目录列表,这些工具可以将各个字符呈现为十六进制 如果您尝试从Java和记事本中打开路径名(用于读取),那么也值得一看。一个有趣的家伙可能在文件名(或目录名)中使用了一个字母,
e
(?
)。因此,请列出Java中的文件:
while (file.getPath().length() > 3 && !file.exists()) {
System.out.println("No such file: " + file.getPath());
file = file.getParentFile();
if (file == null) {
break;
}
}
if (file != null) {
String[] children = file.list();
System.out.println("Siblings: " + Arrays.toString(children));
}
或者将您自己的文件复制到那里。您确定该文件存在吗???您确实意识到文件构造函数不会创建物理文件。权限设置是否正确,以便使用java执行的程序可以访问该文件(如果确实存在)?是否希望使用file.exists()的一些替代方法,有时它不会返回正确的值,我将权限设置为完全控制,但它仍然返回false,即使文件路径已存在,我尝试了您的确切代码,并按预期工作。我甚至在我的文件夹目录中显示了所有隐藏的文件和扩展名,因此文件名已更正,并在上面的注释中发布,服务器为Win 2008。
while (file.getPath().length() > 3 && !file.exists()) {
System.out.println("No such file: " + file.getPath());
file = file.getParentFile();
if (file == null) {
break;
}
}
if (file != null) {
String[] children = file.list();
System.out.println("Siblings: " + Arrays.toString(children));
}