簡體   English   中英

使用URL或文件(在ImageIO.read中)

[英]Using URL or File (in ImageIO.read)

我制作了一個使用多個圖像的應用程序。 我有2種方法來運行我的應用程序:
-按想法run
-制作一個胖jar文件並從控制台java -jar app.jar

如果要從Idea運行它,則必須使用:

BufferedImage backgroundImage = ImageIO.read(new File("res/field.png"));

代替

BufferedImage backgroundImage = ImageIO.read(getClass().getClassLoader().getResource("res/field.png"));
<-這就是我在jar文件大小寫中必須使用的

為什么? 我以為他們差不多。 有什么通用的方法可以解決我的問題嗎?

我一直使用:

BufferedImage backgroundImage = ImageIO.read(getClass().getResource("res/field.png"));

從IDE和jar都可以使用。 .getResource(...)返回URL,即jar://或file://

請注意,路徑要么以/開頭(在這種情況下,它是相對於包根目錄),還是相對於類包-如果您的類是com.example.Test,則/res/指向文件夾com。 / example / Test / res /。

您甚至可以使用靜態版本-YourClassName.class.getResource(...),使您可以輕松地到達包樹的其他“分支”(您可以使用來自不同分支中的類的引用)

使用java.io ,相對路徑取決於當前工作目錄。 使用getResource時,您必須在classpath具有該資源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM