2010-04-22 98 views

回答

13

爲什麼要使用命令行?僅供參考,有內置平臺無關File類。

http://www.exampledepot.com/egs/java.io/deletefile.html
​​

創建目錄:

new File("dir path").mkdir(); 

刪除目錄:

new File("dir path").delete(); 

'的新文件' 在這裏是一個有點用詞不當,它實際上並沒有創造該目錄或文件。它創建一個Java資源鉤子,您可以使用它查詢或操作現有的文件系統資源,或者根據您的請求創建一個新的資源鉤子。否則,使用Runtime.getRuntime().exec("command line here")來使用命令行操作(不建議!!)。

編輯:整理出來的問題海報是具有問題:

String envp[] = new String[1]; 
envp[0] = "PATH=" + System.getProperty("java.library.path"); 
Runtime.getRuntime().exec("command line here", envp); 

envp插入到exec(..)方法調用,這基本上是從環境中PATH變量。

+1

thnxs, 這個運行時對象就是我在找的東西。但是,當我運行此代碼: Runtime.getRuntime()。拋出異常,java.io.IOException:無法運行程序「mkdir」:CreateProcess error = 2,系統找不到指定的文件 – 2010-04-22 20:03:31

3

最好的不是,而是找到完成它的純Java API函數。它更乾淨,更容易理解,更不容易出錯。它也是執行一次編寫任意代碼的Java的唯一方法。一旦你調用shell命令,你就被綁定到那個shell。

在你的情況下,你正在尋找java.io.File類,特別是mkdirdelete方法。

4

至於提到的其他,你不應該簡單的文件管理做到這一點。但把它提到:Java的API有一個名爲Runtime類,允許系統調用...例如:

Runtime.getRuntime().exec("some_command"); 
3

對於人跌跌撞撞到這個問題,並想知道爲什麼Runtime.getRuntime().exec("mkdir foo")不工作,即使參考根據Chris Dennett的回答合併環境,最可能的原因是您的系統上沒有名爲「mkdir」的程序。雖然大多數類Unix系統都有一個這個名字的程序,但它們並不是絕對必要的,而Windows沒有這個名稱,因爲在這兩種情況下,shell都會自己解釋這個命令,而不是將它傳遞給外部程序。

要使其正常工作,請嘗試...爲NT系列Windows(或適用於Windows 95系列的"command /c mkdir foo")的exec ("cmd /c mkdir foo")或適用於Unix的exec ("sh -c \"mkdir foo\"")

事實上,沒有一種獨立於平臺的方式來做到這一點是偏好Java API執行任務的另一個原因。

0

嗨同意不是平臺獨立的事實,但只是爲了測試我不得不使用它的應用程序。 在我的情況下,解決方案爲 Runtime.getRuntime()。exec(「my_command_name」); 不工作了,我不得不放棄的完整路徑批/ SH /可執行文件是 即:

調用Runtime.getRuntime()執行(「/ d /溫度/斌/ mybatfile」);

相關問題