我目前有一個(gè)基本的客戶端-服務(wù)器應(yīng)用程序要開(kāi)發(fā)作為我的任務(wù)。該程序僅用于計(jì)算質(zhì)數(shù)、GCD 等。客戶端是一個(gè) GUI,服務(wù)器端(本地主機(jī))負(fù)責(zé)執(zhí)行計(jì)算并將結(jié)果發(fā)送回客戶端。其中一個(gè)要求是,當(dāng)客戶端用戶點(diǎn)擊“計(jì)算”按鈕時(shí),客戶端程序發(fā)送客戶端需要服務(wù)器執(zhí)行和計(jì)算的特定任務(wù)( 、 等)ComputePrime.java的類名。ComputeGCD.java然后服務(wù)器需要檢查文件夾中是否存在類文件。如果沒(méi)有,則服務(wù)器向客戶端發(fā)送一條錯(cuò)誤消息。如果確實(shí)存在,那么應(yīng)該按預(yù)期進(jìn)行計(jì)算。但是,出于某種原因,即使文件存在,“File.exists()”指令仍會(huì)返回 false。另外,我也需要它在運(yùn)行時(shí)工作。例如,如果我ComputePrime.java在程序執(zhí)行后刪除 a,它應(yīng)該返回 false,如果我在運(yùn)行時(shí)將它添加回來(lái),它應(yīng)該返回 true。我把它放在一個(gè)線程中,因?yàn)樗鼰o(wú)限運(yùn)行只是為了看看它是否適用于動(dòng)態(tài)刪除和添加文件。只要是基本的 Java 代碼,歡迎任何其他想法。Thread t1 = new Thread(){@Overridepublic 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();PS 此代碼在服務(wù)器端。這是項(xiàng)目文件夾結(jié)構(gòu)。我嘗試使用不同的相對(duì)路徑技術(shù),例如 ".././Contract/ComputePrime.java" 、 ".././ComputePrime.java" 、 "~/Contract/ComputePrime.java"、"../Contract /Compute”和“./../Contract/ComoutePrime.java”。即使文件在文件夾中,它們都返回 false。它必須是相對(duì)路徑,這樣程序才能在我教授的計(jì)算機(jī)上運(yùn)行。我不確定為什么會(huì)這樣。在過(guò)去的 5 或 6 個(gè)小時(shí)里,我一直在谷歌上搜索,試圖解決這個(gè)問(wèn)題,但我一無(wú)所獲,這就是為什么我要問(wèn)一個(gè)重復(fù)的問(wèn)題。最后,如果找到解決方案,是否有可能在運(yùn)行時(shí)/動(dòng)態(tài)地解決?比如我執(zhí)行完刪除文件,它應(yīng)該返回false,當(dāng)我放回文件時(shí),它應(yīng)該返回true。先感謝您!更新 嘗試 file.getAbsolutePath 后,這就是我得到的輸出那么,我猜上面代碼中的相對(duì)路徑是正確的嗎?
如何修復(fù)“File.exists()”錯(cuò)誤的布爾返回?
開(kāi)滿天機(jī)
2023-05-10 13:57:28