如何修复 "File.exists()" 错误的布尔值 return?

How to fix "File.exists()" wrong Boolean return?

我目前有一个基本的客户端-服务器应用程序需要开发作为我的任务。

该程序仅用于计算素数、GCD 等。 客户端是一个 GUI,服务器端 (localhost) 负责执行计算并将结果发送回客户端。

其中一个要求是当客户端用户点击"Calculate"按钮时,客户端程序发送Class特定任务的名称(ComputePrime.javaComputeGCD.java, etc)客户端需要服务端执行计算。然后服务器需要检查文件夹中是否存在 class 文件。如果没有,则服务器向客户端发送一条错误消息。如果确实存在,那么应该按预期进行计算。

但是,由于某些原因,即使文件存在,"the File.exists()" 指令也会保持 returning 错误。另外,我也需要它在运行时工作。例如,如果我在程序执行后删除了一个 ComputePrime.java,它应该 return false,如果我在运行时添加它,它应该 return true。

我把它放在一个线程中,因为它无限运行只是为了看看它是否适用于动态删除和添加文件。只要是基本的 java 代码,欢迎任何其他想法。

Thread t1 = new Thread()
{
@Override
public void run()
{
    File file = new File("../Contract/ComputePrime.java");
    if(file.exists())
    {
        System.out.println("Exists");
    }
    else
    {
        System.out.println("Not Exists");
    }
    try {
        this.sleep(1000);
        this.run();
    } catch (InterruptedException ex){}

}
};
t1.start();

P.S此代码在服务器端。

这里是Project folder structure。

我尝试过使用不同的相对路径技术,例如 ".././Contract/ComputePrime.java" 、 ".././ComputePrime.java" 、 "~/Contract/ComputePrime.java”、“../Contract/Compute”和“./../Contract/ComoutePrime.java”。即使文件在文件夹中,它们都是 return false。它必须是相对路径,这样程序才能在我教授的计算机上运行。

我不确定为什么会这样。在过去的 5 或 6 个小时里,我一直在谷歌上搜索,试图解决这个问题,但我一无所获,这就是为什么我要问一个重复的问题。

最后,如果找到解决方案,是否有可能 runtime/dynamically?。例如,如果我在执行后删除文件,它应该 return false,当我放回文件时,它应该 return true。

提前致谢!

更新 尝试后 file.getAbsolutePath, this is what I get as the output

那么,我猜上面代码中的相对路径是正确的吗?

原来我的相对路径是错误的。 @RogerGustavsson 提供的答案:

./src/Server/Contract/ComputePrime.java