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

标签 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 的路径?

谢谢。

最佳答案

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

示例:

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

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

关于Java规范化外部执行的文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5059037/

相关文章:

java - 在后台对 Eddystone Beacon 使用react

java - FileInputStream.available() 返回字节,但 ObjectInputStream.available() 返回 0

c - 调用函数 popen 中断进程

go - 如何获取进程所有者使用 WMI 请求

java - 如何从我的自定义基础适配器中删除项目?

java - 删除java中字符之前和之后的字符

java - 如何导入 java 的 multimap?

java - 文件菜单上显示不可点击的文本

linux - 查找没有特定权限的文件

java - 为每个应用程序创建的每个jvm,这是一个线程还是一个进程