2012-09-26 60 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 –