我需要一個java方法,它將讀取命令提示符輸出並將其存儲到要讀入Java的字符串中。獲取命令提示輸出到Java中的字符串
這是我迄今爲止,但沒有正確工作。
public void testGetOutput() {
System.out.println("\n\n****This is the testGetOutput Method!****");
String s = null;
String query = "dir " + this.desktop;
try {
Runtime runtime = Runtime.getRuntime();
InputStream input = runtime.exec("cmd /c " + query).getInputStream();
BufferedInputStream buffer = new BufferedInputStream(input);
BufferedReader commandResult = new BufferedReader(new InputStreamReader(buffer));
String line = "";
try {
while ((line = commandResult.readLine()) != null) {
s += line + "\n";
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(s);
} catch (Exception e) {
e.printStackTrace();
}
}//end testGetOutput()
我認爲問題是當我嘗試將查詢更改爲將執行HandBrakeCLI.exe的命令。當程序運行時(但似乎已暫停)看着我的系統,它顯示出HandBrakeCLI.exe正在我的IDE下運行的cmd窗口下運行。所有這一切都有道理,但HandBrakeCLI.exe不會退出,所以我猜這就是爲什麼我無法讀取輸出作爲我的程序輸入。
所以,在那之後。我的大問題是:我的查詢完成後如何讓HandBrakeCLI.exe關閉,以便我可以得到它的輸出? 只是額外的信息,上面的方法和我爲HandBrakeCLI掃描DVD方法之間的唯一區別是查詢變量是不同的。像這樣的例子:
String query = "C:\Users\Kent\Desktop\HBCLI\HandBrakeCLI -t --scan -i "C:\Users\Kent\Desktop\General Conference DVDs\Sources\174th October 2004\DVD 1"; //this is actually a variable in the DVD object, but here's an example'
哦,順便說一下,當我在一個普通命令提示符下運行該查詢,它正是我想要的它,讓我所有的輸出我拼命的願望!
這裏是原來的問題(我不知道如何重新提交問題):
我一直在到處找,不能想出解決辦法。我不確定我發現的內容甚至與我想要做的事情有關。我還沒有很多代碼,所以它不會做太多的代碼,我認爲這應該很簡單,所以我會在這裏給出一些截圖。因此,這裏是我的任務:
掃描文件夾裏面充滿翻錄DVD文件夾(與VOB文件等VIDEO_TS文件夾),並且這些文件夾名稱存儲爲DVD的標題。
使用HandBrakeCLI掃描每個文件夾並將輸出存儲爲字符串。
將字符串正確表示以標識每個標題,章節和語言。
生成查詢退給HandBrakeCLI批量編碼在每個標題爲每個DVD每章每一種語言(你可以看到我爲什麼要自動執行此!)
存儲這些查詢的*。蝙蝠文件
我不確定的唯一部分是第2步!我可以很容易地做其他事情。我已經閱讀了很多關於OutputStreams的內容,但我似乎無法理解它是如何工作的。我真的只需要得到輸出到一個字符串,我可以正則表達式來獲得我需要的東西。下面是我需要輸入什麼,什麼我需要從輸出到剝離截圖:
輸入到HandBrakeCLI:
輸出掃描:
Jarrod,感謝您的快速響應!我會盡力實現這一點,並讓你知道它是怎麼回事! – kentcdodds
完美!我不完全確定它是如何工作的。但是我會稍微查看一下以找出答案。但是,它的功能就像一個魅力!現在我只需要將所有這些東西進行正則表達式!無論如何,謝謝你的幫助!哦,我不確定Maven是什麼。我的IDE是Netbeans。我不需要添加的東西。再次感謝! –
kentcdodds