六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 50|回复: 0

java中调用图片音频等文件的相对路径问题

[复制链接]

升级  20%

2

主题

2

主题

2

主题

童生

Rank: 1

积分
10
 楼主| 发表于 2013-1-27 05:06:44 | 显示全部楼层 |阅读模式
最近在用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包,皆不再受文件路径困扰。
 
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表