Java нормализует путь к файлу для внешнего исполнения - PullRequest
0 голосов
/ 20 февраля 2011

У меня есть этот код:

StringBuilder command = new StringBuilder("ffmpeg -ac 1 -i ");
command.append(videoFile.getPath());
command.append(" ");
command.append(audioFile.getPath());
Process proc = Runtime.getRuntime().exec(command.toString());

Проблема в том, что когда файл (videoFile | audioFile) имеет пробел в своем пути, процесс (ffmpeg) не может быть выполнен. У меня вопрос, как я могу исправить путь для Linux и Windows перед выполнением процесса?

Спасибо.

1 Ответ

3 голосов
/ 20 февраля 2011

Вместо использования exec(String) используйте exec(String[]) (из Runtime).Вторая форма позволяет вам указывать все аргументы индивидуально, чтобы Java не анализировала их дальше и не разделялась на пробелы.

Пример:

  Process proc = Runtime.getRuntime().exec(
    new String[]{"ffmpeg", "-ac", "1", "-i",videoFile.getPath()), audioFile.getPath()}
  );

Вы всегда должны использоватьвторая форма, если ваши аргументы могут содержать пробелы, в противном случае ваша команда может прерваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...