Java规范化外部执行的文件路径
我有这样的代码:
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 的路径?
谢谢。
I have this code:
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());
The problem is when the file (videoFile | audioFile) have a space character in their path, the process (ffmpeg) fail to execute.
My question is how can I fix the path for both Linux and Windows before executing the process ?
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不要使用
exec(String)
,而是使用exec(String[])
(来自运行时
)。第二种形式允许您单独提供所有参数,这样 Java 不需要进一步解析它们,并且不会在空格上分割。示例:
如果您的参数可能包含空格,则应始终使用第二种形式,否则您的命令可能会中断。
Instead of using
exec(String)
, useexec(String[])
(fromRuntime
). The second form lets you supply all arguments individually, that way Java does not need to parse them further, and will not split on spaces.Example:
You should always use the second form if your arguments may contain spaces, otherwise your command may break.