2013-03-22 135 views
2

代碼我使用加載圖像的圖像是:從加載資源文件夾

ImageIO.read(SpriteSheet.class.getResource(path)); 

該路徑被路徑到資源。但它會與IllegalArgumentException錯誤。我想知道可能會造成什麼結果,並得出結論,應該將資源加入到班級的路徑中。

是否可以從另一個文件夾加載圖像,比如bin文件夾以外的res文件夾? (文件夾舉行編譯類)

編輯: 所以我搞砸了幾件事情,並提出了一個解決方案。但現在我有另一個問題。這裏是我的代碼

File sheet = new File(SpriteSheet.class.getProtectionDomain().getCodeSource().getLocation().getPath()); 
URI uri = sheet.toURI(); 
    BufferedImage image = ImageIO.read(uri.toURL()); 

當我嘗試運行它,它給了我一個IIOException: Can't read Input File 這意味着我永遠不能真正得到它的工作。我嘗試通過將URL鏈接到控制檯進行調試,並且這是URL。 C:\Users\Amma\Abhijeet\Eclipse%20Workspace1\Test%20Game\bin %20來自中間。意思是該文件是永遠可以被啓用的。無論如何,我可以解決這個問題嗎?

謝謝。

+0

[DYM ???](http://stackoverflow.com/a/15187181/714968)作者:@Gagandeep Bali – mKorbel 2013-03-22 08:42:17

回答

0

Class.getResource如果找不到資源或調用者沒有足夠的權限來獲取資源,將返回null。 如果ImageIO.read的所有變體都接收到空輸入,則它們將拋出IllegalArgumentException

查看getResource的文檔,瞭解如何從給定資源名稱構建絕對資源名稱,以及搜索資源的規則是什麼。

只要您有權限,您可以從任何位置讀取圖像,ImageIO.read方法接受File,URL或InputStream,因此您有很多選項可以執行此操作。

+0

感謝您的幫助。我會試試看。 – Abhi2011 2013-03-23 07:44:02