0

1 つのThMapInfratab1-2.exeファイルと 3 つの.txtファイルを含むフォルダーがあります。.exe任意の方法でファイルを実行すると (コマンド プロンプトを使用して、ダブルクリックするだけで任意の言語を使用して)、1 つのアイコンが に表示されTaskbarます。

ここに画像の説明を入力

.exeは2〜3分実行されます。

.exeを使用してこれらのファイルを実行したいことを知っています。テクノロジーからJava実行する方法を見つけました。.exeJava

私のコンセプトは、最初に.txtディレクトリからファイル名を見つけることでした。最終的にはこのようになります。

List<File> fileNames={"File1.txt","File2.txt","File3.txt"};

長さが に等しい.exeので、ファイルを 3 回実行したいことを知っています。このために、次のコードを書きました。fileNames3

 //ExeFileProcess Function

 public void ExeternalFileProcessing(String DirectoryPath,String exeFileName,String inputFileName) throws IOException
 {
     String executableFileName = DirectoryPath+"/"+exeFileName;
     String inputFile=inputFileName;
     ProcessBuilder processBuilderObject=new ProcessBuilder(executableFileName,inputFile);
     File absoluteDirectory = new File(DirectoryPath);
     processBuilderObject.directory(absoluteDirectory);
     processBuilderObject.start();
     //processBuilderObject.wait();
 }

//Main Function code.

 public static void main(String[] args) throws IOException
 {
     ExternalFileExecutions ExternalFileExecutionsObject=new ExternalFileExecutions();
     for (int fileIndex = 0; fileIndex < fileNames.size(); fileIndex++) 
     {
         ExternalFileExecutionsObject.ExeternalFileProcessing("C:/Users/Infratab Bangalore/Desktop/Rod","ThMapInfratab1-2.exe",fileNames[fileIndex ]);
     }
 }

上記のコードを評価すると、一度に 3 つの.exeプロセスが開始されますが、そのようなことはしたくありません。.exeファイルを1つずつ実行したいです(前の.exeプロセスが完了したかどうかを監視する必要があります。完了したら、次の反復が許可されます)。

で試しましたが、Wait()うまくいきません。

私は、これのために私は私のExeternalFileProcessing(). しかし、私は何も得られませんでした。

誰でも私に提案できますか。

私の問題を理解していただければ幸いです。

4

1 に答える 1

2

ProcessBuilder.startメソッドはProcessクラスのインスタンスを返します。作成したプロセスが停止するまで待つには、 waitForメソッドを使用できます。

    ...
    Process process = processBuilderObject.start();
    process.waitFor();
}

processBuilderObject.wait()Object のwaitメソッドの呼び出しです。これは並行性のために使用され、プロセスにはまったく関係しません。

于 2013-07-24T14:31:28.163 に答える