type
status
date
slug
summary
tags
category
icon
password
Property
很多Java程序启动的时候,都需要读取配置文件,例如从一个
.properties
文件中读取配置:这段代码要正常执行,必须在C盘创建
conf
目录,然后在目录里创建default.properties
文件。但是,在Linux系统上,路径和Windows的又不一样。因此,从磁盘的固定目录读取配置文件,不是一个好的办法。有没有路径无关的读取文件的方式呢?
Java存放
.class
的目录或jar包也可以包含任意其他类型的文件,例如:- 配置文件,例如
.properties
;
- 图片文件,例如
.jpg
;
- 文本文件,例如
.txt
,.csv
;
- ……
从classpath读取文件就可以避免不同环境下文件路径不一致的问题:如果把
default.properties
文件放到classpath中,就不用关心它的实际存放路径。在classpath中的资源文件,路径总是以
/
开头,先获取当前的Class
对象,然后调用getResourceAsStream()
就可以直接从classpath读取任意的资源文件:调用
getResourceAsStream()
需要特别注意的一点是,如果资源文件不存在,它将返回null
。因此需要检查返回的InputStream
是否为null
,如果为null
,表示资源文件在classpath中没有找到:如果把默认的配置放到jar包中,再从外部文件系统读取一个可选的配置文件,就可以做到既有默认的配置文件,又可以让用户自己修改配置:
这样读取配置文件,应用程序启动就更加灵活。