2016-04-18 55 views
-2

我想檢查文件是否存在於需要的位置。java中運行時檢查文件存在

我從java創建一個文本文件例如的abc.txt。我將在其他一些程序中使用這個文件,假設一個CAD程序來生成繪圖。在完成CAD處理之後,它生成具有一些擴展名的文件,例如'.cad'。這一代繪圖將需要一些時間。

我打算在另一個程序中使用相同的'.cad'文件讓我們假設一個分析軟件來分析生成的繪圖。

現在我的問題是,我想檢查'.cad'文件是否生成。由於.cad文件的生成需要時間,如果沒有這個文件,我不能進一步處理,即我不能將該文件提供給下一步(即分析軟件)。

那麼,有沒有什麼辦法在java中,這樣我可以檢查.cad文件的存在一段時間(比如說120秒)。如果我找到該文件,那麼只能繼續下一步。

我搜索了方法file.exists()但它只檢查一次。

請給我一些提示。 謝謝大家!

+0

CAD圖紙通常是'.dwg'文件:p –

+0

當然'它只檢查一次'。它會檢查你何時打電話。如果您想多次檢查,請使用循環。不清楚你在問什麼。 – EJP

+0

使用'TimerTask'和'Timer'類安排檢查文件的存在。在你的'TimerTask'中使用'file.exists()'檢查文件系統中的文件存在。 –

回答

1

我想你可以使用守護進程讓你的任務在後臺,希望它有幫助的朋友!

public class DaemonFolder extends Thread { 

@SuppressWarnings("deprecation") // stop(); 
public static void main(String[] args) { 
    System.out.println("Pulsar enter para finalizar"); 
    DaemonFolder daemonn= new DaemonFolder(); 
    Scanner finalize= new Scanner(System.in); 
    finalize.nextLine(); 
    daemonn.stop(); 
    finalize.close(); 
    System.out.println("Programa finalizado!"); 
} 

public DaemonFolder() { 
    setDaemon(true); // Daemon threads in Java are like a service providers for other threads or objects running in the same process as the daemon thread 
    start(); 
} 

@Override 
public void run() { 
    while (true) { 
     try { 
      sleep(5000); 
      if (new File("anonymous.txt").exists()){ 
      System.out.println("exists"); 
      //DO SOMETHING 
      } else { 
       System.out.println("not exists"); 
      }    
     } catch (Exception e){ 
      e.printStackTrace(); 
     } 
    } 
} 
} 
+0

謝謝!我使用thread.sleep。它的工作原理。但是可以連續進行檢查嗎?只要檢測到文件,就可以繼續下一步?這樣用戶不需要等待額外的時間。 – LeoNad

0

例如,您可以編寫一個計數從0到119的for循環,並執行存在檢查,如果它成功調用下一步,則在下一次檢查前如果不呼叫Thread.sleep(1000)等待一秒鐘。

或者你可以例如在Timer安排TimerTask要運行的每一秒,並在TimerTask做存在檢查,如果最大時間已過去中止或者如果檢查順利做下一步並中止。

有很多方法可以做到,這些只是其中的兩個。

0

您需要使用您的方法和Thread.sleep(120000)創建循環。 第Sthth。像這樣:

while(true) { 
    if (file.exists()) { 
    break; 
    } else { 
    Thread.sleep(120000); 
    } 
}