2013-01-07 23 views
2

好吧,我必須有一個簡單的方法,我在這裏想念,但我畫了一個空白。我有一個自定義的ListView,它從外部存儲器上的一些文件中獲取一些圖像,一些從互聯網上獲取它們的圖像,並且如果它們都沒有從可繪製文件夾中顯示PNG文件。對於我的邏輯,我需要能夠判斷String(圖片位置)是URL類型還是文件類型。如何測試String是否爲URL格式?

那麼,我將如何能夠判斷String是URL格式還是文件格式?

+1

你不能檢查協議嗎?像文件:/ /本地和http://或類似的網址?並且如果本地文件的類型爲/ mnt/sdcard,而urls的類型爲protocol:// domain/path。這很難嗎? – ppsreejith

+0

這是一種可能性,當然,我不得不使用'Environment.getExternalStorageDirectory()。getAbsolutePath()'而不是硬編碼'/ mnt/sdcard'。 「這很難嗎?」 - 這是個人認知的問題,與所問的問題無關。 – chRyNaN

回答

0

格式錯誤的URL會給你一個例外。要知道您的網址是否有效,您必須執行與該網址的握手。

我沒有其他方式知道。

4

使用URI通過嘗試解析你的字符串:

try { 
    new URI(theString); 
} catch (URISyntaxException e) { 
    // Certainly not an URL 
} 

你將不得不作出額外的檢查,如檢查此URI的方案(或調用它.toURL()並檢查它不會引發MalformedURLException) 。

+0

它看起來像檢查是否拋出'MalformedUrlException'是最好的方法。非常感謝,我很感激! – chRyNaN

+1

你確定你接受了正確的答案嗎? ;) – fge

+0

是的,雖然你的答案更深入,但總的概念是一樣的,接受的答案是第一。不過,我給了你一個細節+1。謝謝! – chRyNaN