0

我有一个包含 1 个ThMapInfratab1-2.exe文件和 3 个文件的文件夹.txt。如果您.exe以任何方式运行文件(通过命令提示符,只需双击并通过任何语言),将出现一个图标Taskbar

在此处输入图像描述

.exe将运行 2-3 分钟。

知道我想使用.I 找到如何从技术运行这些.exe文件。Java.exeJava

我的概念是,首先我会.txt从目录中找到文件名。最后我会得到这样的。

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

知道我想运行我的.exe文件 3 次,因为我的fileNames长度等于3。为此,我编写了以下代码。

 //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一个一个地运行文件(我们需要监控上一个.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 回答