2016-04-18 14 views
-2

ファイルが必要な場所に存在するかどうかをチェックします。Javaの実行時にファイルが存在するか確認してください

私はjavaから1つのテキストファイルを作成しています。 abc.txt。このファイルを他のプログラムで使用して、図面を生成するCADプログラムを作ってみましょう。 CADプロセスが完了した後、それは、例えば拡張子がいくつかのファイルを生成する。 '.cad'。この描画の生成には時間がかかります。

別のプログラムで同じ '.cad'ファイルを使用して、生成された図面を解析する解析ソフトウェアを考えましょう。

私の問題は、「.cad」ファイルが生成されているかどうかをチェックしたいのです。 .cadファイルの生成に時間がかかるので、このファイルがなければ、私は次のステップ(すなわち分析ソフトウェア)にこのファイルを提供することはできません。

私はしばらくの間、.cadファイルの存在を確認することができるように、Javaには何らかの方法があります(120秒としましょう)。私がファイルを見つけたら、次のステップに進むだけです。

私は方法file.exists()について検索しましたが、1回だけチェックします。

いくつかのヒントを教えてください。 ありがとうございます!

+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)を呼び出して次のチェックの前に1秒待つことができます。

それとも、たとえば秒ごとに実行されるようにしてTimerTaskにチェックを存在し、最大時間がアボートを経過やチェックがうまくいけば、次のステップを実行し、中止された場合の対処TimerTimerTaskをスケジュールすることができます。

これを実行する方法はたくさんありますが、これは2つだけでした。

0

メソッドとThread.sleep(120000)でサイクルを作成する必要があります。 Snmth。

while(true) { 
    if (file.exists()) { 
    break; 
    } else { 
    Thread.sleep(120000); 
    } 
} 
関連する問題