`
flying.xu77
  • 浏览: 4645 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java读取资源文件的几种方法与应用

    博客分类:
  • java
阅读更多
资源文件的读取:
项目目录为以下结构,其中src,resources目录都作为source目录。
project
  |--src
      |--jp
         |--pset
             |--Main.java
             |--configs
                  |--test1.properties 
  |--resources
      |--configs
           |--test2.properties

方法1:
java.lang.Class.getResourceAsStream(String name)

资源名的写法分为两种:
1)以“/”开始。改种写法以class-path为根目录匹配资源。
2)不以“/”开始。该种写法以类所在目录为根目录匹配资源。

假设我们要在Main.java中编写代码读取test1.properties与test2.properties文件,应该这样写

this.getClass().getResourceAsStream("configs/test1.properties");
// [.]表示当前目录的意思
this.getClass().getResourceAsStream("./configs/test1.properties");
this.getClass().getResourceAsStream("/jp/pset/configs/test1.properties");

this.getClass().getResourceAsStream("../../configs/test2.properties");
this.getClass().getResourceAsStream("/configs/test2.properties");


方法2:
java.lang.ClassLoader.getResourceAsStream(String name)

资源名不能以“/”,否则会报错,它强制以class-path为根目录。

假设我们要在Main.java中编写代码读取test1.properties与test2.properties文件,应该这样写
this.getClass().getClassLoader().getResourceAsStream("jp/pset/configs/test1.properties");
this.getClass().getClassLoader().getResourceAsStream("configs/test2.properties");


资源文件的应用:

资源文件一般用于系统参数的设置,为了便于修改,一般不会编译进jar文件。

前些时候写了一个MQ的监听服务。我把代码都编译成jar包,把系统配置文件server.properties和log4j.properties文件放在jar包同一个目录。

如下:

root
  |--xxx.jar
  |--lib     /* 该目录放置xxx.jar运行的依赖包 */
  |--server.properties
  |--log4j.properties

通过java -jar xxx.jar命令运行jar包后发现log4j不能正确启动。

有可能会报告类似以下的错误:
log4j:WARN No appenders could be found for logger (jp.pset.gcm.GCMService).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.


其实这个错误是没有读取到log4j.properties文件的原因。log4j是从class-path中读取配置文件的,所以判定该错误为:log4j.properties文件没有加入class-path。

修改MANIFEST.MF文件

Class-Path: . lib/geronimo-jms_1.1_spec-1.0.jar lib/gcm-server.jar lib/json_simple-1.1.jar lib/log4j-1.2.17.jar lib/qpid-client-0.16.jar lib/qpid-common-0.16.jar lib/slf4j-api-1.7.5.jar lib/slf4j-log4j12-1.7.5.jar

第一个[.]很重要,它表示把当前目录也设为class-path。这样log4j就能读取到配置文件了。
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java读取配置文件

    在Java中,我们可以使用多种方法来读取配置文件,下面将详细介绍几种常见的方法。 1. **使用`java.io`流读取** 最基础的方式是使用Java的I/O流来读取文本配置文件(通常是.properties格式)。例如,`java.io....

    java读取.properties配置文件的几种方法

    下面将详细介绍几种在Java中读取`.properties`配置文件的方法。 1. 使用`java.util.Properties`类 `Properties`类是Java提供的一种内置机制,用于处理属性列表。它继承了`Hashtable`类,提供了加载和保存属性列表...

    java文件路径获取

    假设有一个位于`com.explorers`包下的`Test.java`类,以及一个名为`abc.jpg`的资源文件,我们可以通过以下几种方式获取该资源: 1. 使用`Class.getResourceAsStream`: ```java InputStream inputStream = Test....

    java 读取properties文件代码

    在Java编程中,Properties文件是一种常用的配置文件格式,用于存储应用程序的配置参数或者环境设置。这些文件通常以键值对的形式存在,例如`key=value`。读取Properties文件是Java开发中的常见操作,特别是在需要...

    Java中获取文件路径的几种方式

    例如,通过`this.getClass().getResource()`方法可以获取资源文件的路径。 ##### 示例代码: ```java File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f.getAbsolutePath()); ...

    java读取kml文件数据

    Java语言在处理各种类型的数据文件方面具有广泛的应用,其中之一就是读取KML(Keyhole Markup Language)文件。KML是一种用于存储地理空间数据的标准格式,常用于Google Earth、Google Maps等应用。本项目的核心是...

    JAVA读取指定文件里面的指定内容

    通过上述分析,我们不仅了解了如何使用Java读取指定文件中的指定内容,还深入了解了Java文件操作的基本流程、相关类库及方法的应用。这种方法不仅适用于简单的文本文件读取,还可以扩展到更复杂的文件处理场景中。...

    Java获取播放文件的时长

    以上就是使用Java获取播放文件时长的几种常见方法。需要注意的是,每种方法都有其适用范围,比如对于不同的文件格式,可能需要选择不同的库或方法。同时,这些方法可能需要处理错误和异常,以及适当地释放资源,确保...

    总结一下java获取路径几种途径

    在Java Web应用中,资源文件的位置可能会变化,此时可以通过`ClassLoader`来获取资源的URL或路径。 ```java // 获取当前类的ClassLoader ClassLoader classLoader = this.getClass().getClassLoader(); // 获取资源...

    java类读取配置文件信息

    `this.getClass().getClassLoader().getResourceAsStream`方法是Java类中的一种获取资源的方法。该方法可以获取类加载器中所加载的资源,例如配置文件。在Java类中,我们可以使用该方法来读取配置文件信息。 例如,...

    java静态文件处理

    在Java中,处理静态文件的方式主要有以下几种: 1. **使用内置容器**:例如Tomcat、Jetty等Java应用服务器都内置了对静态文件的支持。当请求到达服务器时,如果路径匹配到静态资源,服务器会直接返回该文件,而无需...

    java 解析 chm 文件

    CHM文件是一种常见的帮助文档格式,它包含了多个HTML页面、图像和其他资源,并使用了一种特殊的压缩方法存储。在Java中处理CHM文件,通常是为了在不支持或没有CHM查看器的环境下访问这些内容,或者为了将CHM内容集成...

    Java应用程序读取图片内容.zip

    在Java编程语言中,读取图片内容是一项常见的任务,尤其在开发图形用户界面(GUI)应用、处理图像数据或进行图像分析时。本教程将详细解释如何使用Java来读取和处理图片。以下是一些核心知识点: 1. **Java Image I...

    将Java程序作成exe文件的几种方法

    本文将详细介绍几种常见的将Java程序转化为exe文件的方法。 #### 1. Exe4j Exe4j 是一款由 Ej-Technologies 公司开发的工具,它支持将 Java 应用程序打包为可执行文件(exe)。Exe4j 的一大特点是它不仅能将 JAR ...

    Java读取并下载网络文件的方法

    Java读取并下载网络文件的方法 Java读取并下载网络文件是Java编程中一个常见的操作,通过使用Java语言可以...Java读取并下载网络文件的方法是一种非常有用的技术,可以满足各种需求的文件下载和网络爬虫等应用场景。

    JAVA中获取各种路径

    此方法返回类的资源路径,通常用于获取与类相关的资源文件,例如`/D:/TEST/WebRoot/WEB-INF/classes/pack/`,这在加载配置文件、模板等静态资源时非常有用。 #### (2) 获取工作目录路径:`System.getProperty("user...

    java路径获得几种方法.txt

    本文将详细介绍几种获取Java路径的方法,并对每种方法的应用场景进行解释。 #### 二、获取路径的基本概念 在讨论具体方法之前,我们先了解几个基本概念: - **虚拟路径**:指的是Web应用中的逻辑路径,通常以`/`...

    将Java应用程序本地编译为EXE的几种方法

    ### 将Java应用程序本地编译为EXE的几种方法 在IT行业中,将Java应用程序转换为本地可执行文件(EXE)的需求时有发生,尤其是为了在不支持Java环境的系统上运行,或者为了简化软件分发过程。下面将详细介绍几种常见...

    java实现文件加密解密

    Java 实现文件的加密与解密是指利用 Java 语言将资源文件(包括图片、动画等类型)进行简单的加密和解密。这种策略的原因和好处是将准备好的资源存储在云上,使用时通过网络进行读取即可,减少了应用程序本身的大小...

Global site tag (gtag.js) - Google Analytics