2014-04-16 33 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