我正在尝试使用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)。
感谢您的帮助。
答案 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();