java中调用图片音频等文件的相对路径问题
最近在用java开发个IM,在调用图片和音频时,设置相对路径总是存在问题。eclipse下设好了,打jar包时又发生问题。经过一番摸索找到了一个解决办法:
利用
URL java.lang.ClassLoader.getResource(String arg0)
通过类加载器加载文件资源
封装了一个资源类,需要取得图片或音频等文件时只需调用该类的相应方法即可
import javax.swing.ImageIcon;import java.awt.Image;import java.awt.Toolkit;import java.io.File;import java.applet.Applet;import java.applet.AudioClip;/**** <p>Title: 获取资源</p>* <p>Description: </p>* <p>Copyright: Copyright (c) 2008</p>* <p>Company: </p>* @author landix* @version 1.0*/public class ResourceManager { //系统图片路径 private static String IMAGE_RESOURCE_PATH = "com/landix/oamq/client/images/"; //系统音频路径 private static String SOUND_RESOURCE_PATH = "com/landix/oamq/client/sound/"; //系统文件路径 private static String FILE_RESOURCE_PATH = ""; private ResourceManager() { } public static ImageIcon getIcon(String imageName) { if (imageName == null) return(null); ImageIcon icon = null; try { //通过类加载器加载图片资源,作为图标对象的参数 icon = new ImageIcon(ResourceManager.class.getClassLoader() .getResource(IMAGE_RESOURCE_PATH + imageName)); } catch (Exception ex) { System.out.println ("### Exception in getIcon() : \r\n" + IMAGE_RESOURCE_PATH + imageName + " " + ex.toString()); } return icon; } public static Image getImage(String imageName) { if (imageName == null) return(null); Image image = null; try { //通过类加载器加载图片资源,作为图标对象的参数 image = Toolkit.getDefaultToolkit().getImage(ResourceManager.class.getClassLoader() .getResource(IMAGE_RESOURCE_PATH + imageName)); } catch (Exception ex) { System.out.println ("### Exception in getIcon() : \r\n" + IMAGE_RESOURCE_PATH + imageName + " " + ex.toString()); } return image; } public static AudioClip getSound(String soundName) { if (soundName == null) return(null); AudioClip wowo = null ; try { //通过类加载器加载声音资源,作为声音对象的参数 wowo = Applet.newAudioClip(ResourceManager.class.getClassLoader() .getResource(SOUND_RESOURCE_PATH + soundName)); } catch ( Exception ex ) { System.out.println ("### Exception in getIcon() : \r\n" + SOUND_RESOURCE_PATH + soundName + " " + ex.toString()); } return wowo; } public static File getFile(String fileName) { if (fileName == null) return(null); File file = null; try { //通过类加载器加载文件资源,作为文件对象的参数 file = new File(ResourceManager.class.getClassLoader() .getResource(FILE_RESOURCE_PATH + fileName).toString()); } catch (Exception ex) { System.out.println ("### Exception in getIcon() : \r\n" + FILE_RESOURCE_PATH + fileName + " " + ex.toString()); } return file; }}
经过实践,无论是eclipse下调试还是打成jar包,皆不再受文件路径困扰。
页:
[1]