使用getRuntime()。exec()进行文件复制

时间:2012-02-23 22:51:42

标签: java file-io runtime.exec

我正在尝试复制文件。这是来源。注意,des是包含URL的字符串变量。

Process process = Runtime.getRuntime().
    exec("cmd.exe\t/c\tcopy\t"+source+"\t"+des);

有谁能告诉我它为什么不起作用?

4 个答案:

答案 0 :(得分:4)

我认为你应该使用FileUtils.copyFile(),但无论如何都要尝试这个。

String[] command = new String[5];
command[0] = "cmd";
command[1] = "/c";
command[2] = "copy";
command[3] = "test.java";
command[4] = "D:";
Process p = Runtime.getRuntime().exec (command);

而不是将您的命令作为single string构造array,而不是将其传递给exec

我试过这个

String command = "cmd /c copy test.java D:";

对我来说很好。

答案 1 :(得分:2)

建议:

  1. 使用ProcessBuilder构建Process
  2. 自动处理'2' - 将命令分成几部分。
  3. 合并输出流(并非完全必要,但更简单......)。
  4. 消耗(和显示)输出流。
  5. 但一般来说,请阅读并实施 所有 When Runtime.exec() won't的建议。

答案 2 :(得分:1)

我相信

Runtime.exec会将字符串发送到命令处理器cmd.exe。所以这正在运行cmd.exe,在其中运行另一个cmd.exe,并传递您的参数。我没有Windows机器来测试它(感谢上帝),但我认为有cmd.exe的参数告诉它将参数作为命令行运行。

答案 3 :(得分:1)

为什么不使用FileUtils.copyFile()