Runtime.getRuntime.exec()复制文件的问题

时间:2011-04-07 21:04:17

标签: java

我想使用以下方法复制文件:

Process process = Runtime.getRuntime()
     .exec("cmd.exe /c  copy  C:\test1\toto.PDF  C:\test2\toto.PDF");

当我手动执行命令时,它可以正常工作,但当我尝试从我的IDE中执行此操作时,没有任何反应。 有人可以告诉我这有什么问题。

感谢。

3 个答案:

答案 0 :(得分:4)

你需要加倍反斜杠; \t本身会转换为制表符。

(你在这里相当不走运,好像你的路径不同,你可能有一个编译器错误给了你一个提示。)

答案 1 :(得分:0)

您的即时错误是\t是制表符。你忘了加倍反斜杠,所以文件名被破坏了。但是,正如其他人所建议的那样,使用Commons IO-Utils进行复制。

答案 2 :(得分:0)

以下是关于pitfalls with runtime.exec的较长文章 copy是cmd.exe的内置函数还是separat可执行文件?

我会将字符串分成几部分,以避免误解空格/标签:

"cmd.exe", "/c", "copy", "C:\test1\toto.PDF", "C:\test2\toto.PDF"

但这都是非常平台的依赖。您应该使用java读取该文件并将其写入目标位置。