2013-05-30 30 views
3

我試圖使用Java爲mplayer開發服務器,但無法打開名稱中有空格的文件(例如「File with space.mp3」)。如何讀取/打開帶有空格的文件

我在關注本教程here。問題是,每次我嘗試打開名稱爲空的文件時,getInputStream()只能讀取空格前面的字符串,從而生成「文件未找到」錯誤。

該命令的路徑是正確的,我嘗試了甚至不同的格式(例如「File \ with \ space.mp3」,「$ PATH/File with space.mp3」等),但沒有任何效果。

如何才能從getInputStream正確獲取數據?如何避免getInputStream在字符串中找到空格時被阻止?

Ps。我使用的是Linux系統,代碼與上面的鏈接相同(ctrl + c,ctrl + v)。

感謝您的幫助。

+0

這可能有助於提供[SSCCE(http://sscce.org/) – MadProgrammer

+0

你有沒有嘗試過任何逃避的空間,或者使用Unicode字符? (不知道這是否會工作 - 只是想大聲) –

+0

你可以試試這個:http://forums.devshed.com/java-help-9/opening-file-with-a-space-in-its-filename -515638.html –

回答

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(); 
+0

謝謝,它終於有效。 – keysuke

+0

感謝ton @MadProgrammer。它像一個魅力。希望兩天前我在這裏偶然發現了。 –

相關問題