如何修复“ File.exists()”错误的布尔值返回?

时间:2019-08-01 08:19:55

标签: java server client file-handling

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

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

其中一项要求是,当客户端的用户单击“计算”按钮时,客户端程序将发送特定任务的类名(ComputePrime.javaComputeGCD.java等)客户端需要服务器执行和计算。然后,服务器需要检查文件夹中是否存在类文件。如果不是,则服务器将错误消息发送给客户端。如果确实存在,则应按预期进行计算。

但是,由于某种原因,即使文件存在,“ File.exists()”指令仍会返回false。另外,我还需要在运行时也能使用它。例如,如果我在执行程序后删除ComputePrime.java,则它应返回false,如果我在运行时将其重新添加,则应返回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”。即使文件在文件夹中,它们都返回false。它必须是相对路径,这样程序才能在我教授的计算机上运行。

我不确定为什么会这样。在过去的5到6个小时里,我一直在搜寻该问题,以解决此问题,但我什么也没收到,这就是为什么我要重复一个问题。

最后,如果找到了解决方案,那么是否有可能在运行时/动态地解决?例如,如果我在执行后删除文件,则它应该返回false,而当我放回文件时,它应该返回true。

提前谢谢!

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

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

1 个答案:

答案 0 :(得分:0)

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

./ src / Server / Contract / ComputePrime.java