• Java如何获取当前的jar包路径以及如何读取jar包中的资源


    如何加载jar包中的资源。

    1. 比如说我要得到背景图片,源代码中它是

    /src/UI/image/background.jpg

    那么在jar包中它的路径应该是

    /UI/image/background.jpg

    路径最前面的/表示根目录,即绝对路径,若没有最左边的/,则表示相对路径。使用哪种方法看自己的需求,这里使用了绝对路径。

    加载的时候使用

    java.net.URL fileURL = this.getClass().getResource("/UI/image/background.jpg"); 
    javax.swing.Image backGround = new ImageIcon(fileURL).getImage();
    

    即可以获得该图片资源。

    2. 有时候,我们需要加载文本资源或音乐资源,而文本在Java中是以流对象存在的,这时我们就要使用

    InputStream in = this.getClass().getResourceAsStream("/UI/image/background.txt");
    

    加载该资源。


    PS:注意这里两种方法的区别,第一种是先得到该文件的路径,再加载该文件资源。第二种则是直接加载该对象。


    3.有时候,我们有一些资源类,其中的资源对象都是pulic static final修饰的,这里可以采用这样的方法初始化。

    比如说我有一个ImageSource类用来加载各种图片资源,那么可以如下使用

    public class ImageSource { 
      static {
        URL fileURL = ImageSource.class.getResource(“/UI/image/background.jpg”);
        BACK_GROUND = new ImageIcon(fileURL).getImage();
      }
      public static final Image BACK_GROUND;
    }
    

    这里不能用构造函数初始化,因为构造函数和对象相关,而static变量和对象是无关的,只和类相关。在Java的语法中,类中的static块是不依赖类对象的,因此可以初始化statc对象。同时,static块中不能使用this,这里使用了ImageSource.class代替。



  • 相关阅读:
    学到的一些函数和好的方法
    MVC 捋一遍(3)
    MVC 捋一遍(2)
    mvc 安装ef遇到的各种奇葩问题
    MVC 捋一遍(1)
    httpServletRequest.getCharacterEncoding()取出来是个null,怎么办?
    spring常用注解
    覆盖io.spring.platform管理的版本号
    下拉点击跳到指定链接(类同友情链接)
    EditPlus 3.7激活码注册码
  • 原文地址:https://www.cnblogs.com/exmyth/p/16840280.html
Copyright © 2020-2023  润新知