2013-07-24 103 views
0

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

enter image description here

.exe将运行2-3分钟。

知道我想要运行使用Java。我发现如何从Java技术运行.exe这些.exe文件。

我的理念是,首先我会从目录中找到.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过程started.But我不想这样。我想一个一个地运行.exe文件(我们需要监控,前一个.exe进程是否完成,一旦完成,它允许下一个迭代)。

我试过Wait()。但它不工作。

我想,为此我需要在我的ExeternalFileProcessing()中添加一些代码。但我没有得到任何东西。

任何人都可以建议我。

我希望你明白我的问题。

+4

你问了很多问题......我们是否在编码你的产品? :-p –

+0

@PhilippSander其实我只有一个问题,但我想学习'Java'.so我把我的问题分为功能明智的,我想弄明白。但是,在我停留在某个地方的每一个函数中,我都是从'StackoverFlow'家伙寻求帮助,因为这些人已经准备好帮助任何人(甚至是开始玩家)。最后我达到了我的问题的最后阶段。为此,我从昨天开始工作。因为每次我都不想基于任何一个。所以首先我尝试使用谷歌,如果我面临任何问题,我在'StackoverFlow'发布问题。 –

+1

真正消防,这是没有进攻或任何东西!但如果你想学习贾维尔,我会推荐一些更简单的开始 –

回答

2

ProcessBuilder.start方法返回Process类的实例。您可以使用waitFor方法要等到创建过程中停止:

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

processBuilderObject.wait()为对象的wait方法的调用。它用于并发,并且根本不涉及进程。

+0

它的工作很棒。我不明白你的代码中的一件事。 'Process process = processBuilderObject.start();'。'上面是'Process(First Word)'和'Process(second word)'。可能是非常的问题,但我对Java方面很陌生。你能解释一下吗? –

+0

@urtrulyfriend第一个'Process'是一种变量,第二个'process'是一个变量的名字。 –

+0

有时我的'.exe'运行时间为20-30分钟,因为评估时间过程基于'.txt'文件。在这种情况下,循环迭代也会在停止之前的'.exe'文件执行之前开始。如果'.txt'的大小很小,那么'.exe'需要2-3分钟,这个时间完全可以工作。但不能在case1 ('.txt'的大小很大)。 –