Java规范化外部执行的文件路径

时间:2011-02-20 18:29:10

标签: java file process

我有这段代码:

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 个答案:

答案 0 :(得分:3)

不使用exec(String),而是使用exec(String[])(来自Runtime)。第二种形式允许您单独提供所有参数,这样Java就不需要进一步解析它们,也不会在空格上拆分。

示例:

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

如果您的参数可能包含空格,则应始终使用第二种形式,否则您的命令可能会中断。