2015-05-18 87 views
0

有沒有人有一個想法,爲什麼這個轉換並不好:爲什麼我不能用這個URI創建一個File實例?

URI myUri = URI.create("http://storage.googleapis.com/autoplay_audio/titanium.mp3"); 
File f = new File(myUri); 
+0

你得到什麼錯誤? – phuzi

+0

供參考:你在做什麼不是鑄造。你正在創建一個'URI'實例,然後將它傳遞給'File.'的構造函數。Casting看起來像'File f =(File)myUri;'這將不起作用。 – MadConan

回答

0

不能使用超過一個文件URI以外的任何其他(如file://)。

構造File(URI)具有以下條件檢查:

String scheme = uri.getScheme(); 
if ((scheme == null) || !scheme.equalsIgnoreCase("file")) 
     throw new IllegalArgumentException("URI scheme is not \"file\""); 

如果您打算連接到http URI,你需要使用一些其他的機制,例如URL

0

您只能將文件用於文件。對於你的例子來說,File需要知道HTTP協議。根據您的需要和環境,您應該使用Apache HttpClient或其他框架。

+0

我這樣做的原因是因爲我想獲取音頻的持續時間,並且我找到了一個以Java文件格式返回音頻文件持續時間的函數。 你如何建議我做得最好? – davidmoshko

+0

您可以下載該文件與HttpClient爲例,如[這裏描述](http://stackoverflow.com/questions/10960409/how-do-i-save-a-file-downloaded-with-httpclient-into-a特異性-文件夾)。然後您可以將該文件傳遞給需要它的庫。 –

+0

該文件位於Google App Engine服務器中。沒有下載文件沒有辦法獲得文件持續時間? – davidmoshko

相關問題