我想使用以下方法复制文件:
Process process = Runtime.getRuntime()
.exec("cmd.exe /c copy C:\test1\toto.PDF C:\test2\toto.PDF");
当我手动执行命令时,它可以正常工作,但当我尝试从我的IDE中执行此操作时,没有任何反应。 有人可以告诉我这有什么问题。
感谢。
答案 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读取该文件并将其写入目标位置。