如何读取/打开名称中包含空格的文件

时间:2013-05-30 06:40:11

标签: java file-io inputstream mplayer

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

我正在关注本教程here。问题是,每当我尝试打开一个名为空格的文件时,getInputStream()只读取空格前的字符串,生成“找不到文件”错误。

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

如何从getInputStream正确获取数据?如何避免getInputStream在String中找到空格时阻塞?

聚苯乙烯。我使用的是linux系统,代码与上面的链接相同(ctrl + c,ctrl + v)。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

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

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

相反,您应该使用ProcessBuilder,它允许您将每个参数指定为单独的String,从而无需弄乱报价。

ProcessBuilder pb = new ProcessBuilder("/path/to/mplayer", "-slave", "-quiet", "-idle", "file/to/play.avi");
// Other configuration options...
Process p = pb.start();