2013-05-28 108 views
0

此代碼在計算機A上正常工作,並且在計算機B上無法正常工作......我無法理解爲什麼.. 無例外情況或其他任何情況....在計算機創建日誌文件,在計算機B日誌文件未創建。 計算機A和B具有相同的Java版本... 你有什麼想法嗎?Java無法將輸出流保存到文件

String str = "cmd /C dir tools>1.log"; 
    try { 
     Runtime.getRuntime().exec(str); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

PS 此代碼工作正常,兩臺計算機

String str = "cmd /C dir tools"; 
+3

您應該使用Java的內置文件的API。 – SLaks

+1

你有沒有檢查權限 – nidhin

+0

嘗試出字符串指定的命令,但仍然**/K ** –

回答

1

您必須打開進程的輸出流才能正確地將輸出保存到文件中。

您可以通過創建一個Process對象並保存該到一個文件中做到這一點:

Process p = Runtime.getRuntime().exec(str); 
InputStreamReader reader = p.getInputStream(); 
BufferedReader buffer = new BufferedReader(reader); 
String line = null; 
while ((line = buffer.readLine() != null) { 
    //write stuff to file here 
} 
+0

我知道這種方法,它工作正常,但我不明白爲什麼我的方法不起作用 –

+0

我相信這已在SO之前討論過,但我無法找到文章。請看這裏:http://www.javaworld.com/jw-12-2000/jw-1229-traps.html?page=4第4.6節應該解釋它 – Farlan

0

你打算在什麼SLaks說 - 它是你最好的選擇使用內置的文件的API。 這是一個link的一般教程

使用這些API將從計算機A到B ...到C等任何奇怪的環境問題。

+0

好吧,我知道這一點,但我不明白爲什麼我的方法不工作.. 。你能解釋我的情況有什麼不對嗎 –