2014-04-16 41 views
0

我陷入了一種情況。使用Java刪除臨時文件runtime.exec函數

String tmpfolder = System.getProperty("java.io.tmpdir"); 
\\this is the path C:\Users\biraj\AppData\Local\Temp\ 
tmpfolder = tmpfolder.replace("\\", "\\\\"); 
Runtime.getRuntime().exec("cmd /c del "+tmpfolder+"IEDriver.dll /f /s /q"); 

當我運行這段代碼就不會刪除IEDriver.dll文件。 但是,當我給臨時文件夾的靜態路徑,然後它會刪除該文件:

Runtime.getRuntime().exec("cmd /c del C:\\Users\\biraj\\AppData\\Local\\Temp\\IEDriver.dll /f /s /q"); 

誰能向我解釋爲什麼第一個代碼沒有工作?那有什麼不對?

回答

1

問題是,您正在將文字\更改爲第二行中的文字\\。 當我們編寫代碼時,我們在字符串中使用\\來表示程序的文字\,但您的tmpfolder變量已在其中包含正確的文字\

如果你刪除下面一行,它應該工作。

tmpfolder = tmpfolder.replace("\\", "\\\\"); 

理解上的差異最簡單的方法是隻打印您構建的字符串,以及文本字符串和直觀地比較他們。

System.out.println("cmd /c del "+tmpfolder+"IEDriver.dll /f /s /q"); 
System.out.println("cmd /c del C:\\Users\\biraj\\AppData\\Local\\Temp\\IEDriver.dll /f /s /q") 

另一個可能的問題是,你需要改變

"IEDriver.dll /f /s /q" 

"\\IEDriver.dll /f /s /q" 

當然的視覺比較將確切地回答這個問題。

+0

我刪除了第二行,但仍未刪除 – user1254261

+0

@ user1254261,請使用我的解決方案的後半部分,看看是否可以發現其中的差異。我的猜測是你可能會在'IEDriver.dll'前面丟失'\\'。 – merlin2011

+0

感謝它的工作 – user1254261