Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么file.exists()失败?_Java - Fatal编程技术网

Java 为什么file.exists()失败?

Java 为什么file.exists()失败?,java,Java,我检查并打印了路径,路径存在,但它找不到文件。我在本地上尝试了这段代码,它成功了,但我不确定原因是什么(在Java中) 你的代码很好,你需要检查你的文件。确保您的文件实际上是test.html。有时,文件可能以扩展名命名,但实际上是不同类型的文件。例如,您的文件实际上可能是 test.html.html 但会以 test.html 如果使用Windows在本地计算机上测试,请注意文件名不区分大小写。如果您的服务器基于Linux/Unix平台,则文件名将区分大小写 请仔细检查。我可以想出三种可能的

我检查并打印了路径,路径存在,但它找不到文件。我在本地上尝试了这段代码,它成功了,但我不确定原因是什么(在Java中)


你的代码很好,你需要检查你的文件。确保您的文件实际上是test.html。有时,文件可能以扩展名命名,但实际上是不同类型的文件。例如,您的文件实际上可能是

test.html.html

但会以

test.html


如果使用Windows在本地计算机上测试,请注意文件名不区分大小写。如果您的服务器基于Linux/Unix平台,则文件名将区分大小写


请仔细检查。

我可以想出三种可能的解释来解释你所看到的:

  • 这可能是一条断了的捷径。
    的javadoc exists()表示:

    测试此抽象路径名表示的文件或目录是否存在

    如果路径名是断开符号链接的名称,则路径表示的文件或目录不存在。(如果您试图用Java打开它,您将得到一个IOException。)

  • 应用程序没有足够的权限查看该文件。例如,如果
    FolderA
    上的权限使程序无法读取它,
    exists()
    将必须为整个路径返回
    false

  • 不知何故,您已经设法在文件系统中存储的文件路径名或程序中的Java字符串文本中输入了一个时髦的字符。在不同的西方字母表中,有些Unicode字符看起来像拉丁字母(a-z,a-z)。。。但事实并非如此。根据用于显示相应字符的图示符,这些字符可能很难识别


  • 前两种理论可以通过检查涉及的文件和目录进行检验

    第三种方法需要使用一些工具检查源代码和目录列表,这些工具可以将各个字符呈现为十六进制

    如果您尝试从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));
    }