我在加載eclipse中的資源時遇到了一些困難。在IDE中,加載工作正常。在編譯的jar裏,一切都會中斷。從Jar中的資源加載Java加載
這適用於罐的內部和外部加載圖像:
ImageIO.read(this.getClass().getResourceAsStream("E.png"))
這僅適用於IDE的文件對象(我知道這是凌亂):
File f = new File(Thread.currentThread().getContextClassLoader().getResource("Overworld.mp3").getPath().replace("%20", " "));
我希望有一個文件對象File(InputStream)的構造函數,所以我可以使用第一種方法加載一個文件的圖像(目前工作完美無瑕)。但是,這並不存在。
是否有任何其他方法將文件加載到文件對象中,使其可以在IDE和編譯的jar中工作?
在此先感謝。
(獨立但又相互聯繫的問題:爲什麼File f = new File(this.getClass().getResource("Overworld.mp3").getFile());
給予MEDIA_UNAVAILABLE例外,該文件是在同一個包「E.png」在我的項目的所有其他源文件)
一個文件不僅僅表示數據 - 它還有一個位置,可能是一個MIME類型,可見性等。它是有道理的,你不能只從流創建一個文件,你必須指定一個位比那更多的。但似乎你不需要這些信息,那麼爲什麼你需要一個文件? –
URL.getFile()*不會將URL轉換爲文件名。它只是在主機之後返回URL的一部分,所有百分比編碼(不僅僅是「%20」)。嘗試從資源URL創建文件始終是錯誤的。從URL本身讀取,或使用'getResourceAsStream'。 – VGR