2012-09-26 160 views
0

關於class.getResource("path")的一個簡單問題。班級位置的路徑是什麼?有人告訴我看ClassLoader,但我什麼也沒得到。我怎樣才能得到根文件(如果可以如何除了鍵入絕對路徑除了研究)。感謝您的回覆。使用Java加載資源

try 
{ 
    image = ImageIO.read(Images.class.getResourceAsStream(imageName)); 
    BufferedImage img = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB); 
    Graphics g = img.getGraphics(); 
    g.drawImage(image, 0, 0, null); 
    g.dispose(); 
    image = img; 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
    return null; 
} 

回答

0

有很多方法可以在java應用程序中加載資源文件。太陽推薦使用Class.getResource("resource_name")Class.getResourceAsStream("resource_name"),那麼你將分別得到URL和InputStream。如果指定resource_name不包含/,則它將預置爲Class包。所以資源文件必須與Class相同[文件夾結構]。我喜歡做的是撥getResource()/並把資源文件放在包的根目錄下。

this.getClass().getResource("/resource/buttons1.png") 

this.getClass().getResourceAsStream("/resource/TX_Jello2.ttf") 
+0

你的回答真的殺了我的懷疑。我曾經以爲「/」只是給subfoler.Now我明白了。 – user1456170

0

你的情況:

Images.class.getResourceAsStream("/" + fileName) 

將返回InputStream通過imageName相對於類根文件夾指定的File。所以如果你的班級在一個文件夾com.company(文件夾將是com/company)imageName文件(如果這只是一個文件名)將駐留在與「com」文件夾相同的文件夾內。

+0

看來,如果文件路徑包含「/」它會找到根? – user1456170

+0

你絕對正確。錯過了'/'。最近有同樣的問題。也許看看這個:http://stackoverflow.com/questions/12511163/axis2-tomcat-web-service-working-directory –