2013-07-24 148 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'的大小很大)。 –