Копирование файла с использованием getRuntime (). Exec () - PullRequest
1 голос
/ 24 февраля 2012

Я пытаюсь скопировать файл.Вот источник.Обратите внимание, des является строковой переменной, содержащей URL.

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

Может кто-нибудь сказать мне, почему он не работает?

Ответы [ 4 ]

4 голосов
/ 24 февраля 2012

Я думаю, что вы должны использовать 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:";

отлично сработало для меня.

2 голосов
/ 24 февраля 2012

Совет:

  1. Используйте ProcessBuilder для построения Process.
  2. Это автоматически позаботится о '2' - разбить команду на части.
  3. Объединение выходных потоков (не совсем необходимо, но упрощает ..).
  4. Потребляет (и отображает ) выходные потоки.
  5. Но в общем, прочитайте и реализуйте все рекомендации Когда Runtime.exec () не будет .
1 голос
/ 24 февраля 2012

Почему бы просто не использовать FileUtils.copyFile()?

1 голос
/ 24 февраля 2012

Runtime.exec, я полагаю, отправить строку в командный процессор cmd.exe. Так что это запускает cmd.exe, запускает еще один cmd.exe внутри него и передает ваши аргументы. У меня нет машины с Windows, чтобы проверить ее (слава богу), но я думаю, что есть аргументы для cmd.exe, чтобы сказать ей, что нужно запускать аргументы в командной строке.

...