使用Java runtime.exec函数删除临时文件

时间:2014-04-16 05:09:00

标签: java runtime temp

我陷入了困境。

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 个答案:

答案 0 :(得分:1)

问题是您在第二行中将文字\更改为文字\\。 当我们编写代码时,我们在字符串中使用\\来表示程序的文字\,但您的tmpfolder变量中已包含正确的文字\。< / p>

如果你删除以下一行,它应该有用。

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"

当然,视觉比较肯定会回答这个问题。