3

我正在尝试开发一个mplayer使用 Java 的服务器,但我无法打开名称中包含空格的文件(例如“带有 space.mp3 的文件”)。

我在这里学习本教程。问题是,每次我尝试打开名称中包含空格的文件时,空格getInputStream()前的只读字符串都会生成“找不到文件”错误。

命令中的路径是正确的,我甚至尝试了不同的格式(例如“File\ with \ space.mp3”、“$PATH/File with space.mp3”等),但没有任何效果。

我该怎么做才能正确获取数据getInputStreamgetInputStream在String中找到空格时如何避免阻塞?

附言。我用的是linux系统,代码和上面的链接一样(ctrl+c,ctrl+v)。

谢谢您的帮助。

4

1 回答 1

3

问题是使用Runtime#exec. 它认为文件中的空间是另一个参数。

Process mplayerProcess = Runtime.getRuntime().exec("/path/to/mplayer -slave -quiet -idle file/to/play.avi");

相反,您应该使用ProcessBuilderwhich 允许您将每个参数指定为单独String的,从而避免使用引号。

ProcessBuilder pb = new ProcessBuilder("/path/to/mplayer", "-slave", "-quiet", "-idle", "file/to/play.avi");
// Other configuration options...
Process p = pb.start();
于 2013-05-30T06:45:51.580 回答