`
liudaoru
  • 浏览: 1578629 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Configuration -Properties 文件[z]

    博客分类:
  • java
阅读更多

From:http://www.594k.com/java/html/y2007m4/13644/

Properties文件

Properties 文件是配置程序的一种常用作法. Commons Configuration当然支持这种格式并且增强java.util.Properties 这个类 这一节就是介绍PropertiesConfiguration 类的一些特性。

Loading 加载

At 首先,假设有个应用程序的所有配置信息都在一个叫“usergui.properties ”的properties 文件里,文件的内容如下:

# Properties definining the GUI
colors.background = #FFFFFF

要加载这个文件,你可以像下面这样写:

Configuration config = new PropertiesConfiguration("usergui.properties");

If 如果你可以使用文件的绝对路径,那么这个文件会自动在下面几个地方被搜寻:

  • 当前目录
  • 用户主目录
  • classpath

 

Includes 包含文件

If a 如果property文件里有叫做 "include"的键值对,并且值是一个 property文件名, 这么个文件也将被自动包含进配置信息中,举例如下:

# usergui.properties

include = colors.properties
include = sizes.properties
# colors.properties

colors.background = #FFFFFF

Automatic Reloading 自动重新加载

A common issue with properties file is to handle the reloading of the file when it changes. 通常你需要开启一个线程来监视配置文件的时间,并在文件被修改后重新加载进来。 Commons Configuration集成了这个加载机制, 如果需要使用自动加载,只需要在年id配置信息里声明一个自动重载策略:

PropertiesConfiguration config = new PropertiesConfiguration("usergui.properties");
config.setReloadingStrategy(new FileChangedReloadingStrategy());

现在你随时手动修改了usergui.properties 配置信息都能够自动刷新,修改后的值立即在程序里生效。

Saving 保存

调用save()方法就可以保存你的配置:

PropertiesConfiguration config = new PropertiesConfiguration("usergui.properties");
config.setProperty("colors.background", "#000000);
config.save();

你也可以复制一份配置保存到另外一个文件:

PropertiesConfiguration config = new PropertiesConfiguration("usergui.properties");
config.setProperty("colors.background", "#000000);
config.save("usergui.backup.properties);

如果你不想在配置信息改变之后费心的手动保存文件,你可以激活自动保存模式::

PropertiesConfiguration config = new PropertiesConfiguration("usergui.properties");
config.setAutoSave(true);
config.setProperty("colors.background", "#000000); // the configuration is saved after this call

Lists and arrays

Commons Configuration 可以很轻松的返回一组值, 例如你的文件包含了用逗号分割的一组数据:

# chart colors
colors.pie = #FF0000, #00FF00, #0000FF

你不用手动拆分字符串,可以直接作为数组返回:

String[] colors = config.getStringArray("colors.pie");

另外一种作法, 你可以通过多行的同名键值对,来返回一组值。

# chart colors
colors.pie = #FF0000;
colors.pie = #00FF00;
colors.pie = #0000FF;

变量窜改

如果你熟悉Ant或者Maven,你肯定已经用到 (像 ${token})这样可以在配置文件被加载时自动扩充的变量。 Commons Configuration 也支持这样的特性, 下面是个示例:

application.name = Killer App
application.version = 1.6.2

application.title = ${application.name} ${application.version}

特殊字符

如果你需要用到一些特殊字符,比如换行符,制表符,或者unicode字符,你需要进行字符转义,字符串分隔符(默认的是逗号“,”)也需要被转义  :

key = This \n string \t contains \, escaped \\ characters \u0020

分享到:
评论
1 楼 liudaoru 2008-10-14  
Java中获取配置/资源文件
From:http://mistapostle.blogspot.com/2006/10/java.html

几乎所有的系统都需要通过获取配置/资源文件来方便配置系统
但怎样获取资源文件呢

java的应用通常把配置文件和工程中的其他class放在一起(如log4j),原因是可以方便的使用classLoader的 getResourceAsStream()方法获取资源(其实java内部就是这样来
load class的),下面是一个简单例子:

比如你把文件(abc.properties)放到com.yourcompany.common包里面,在确保classpath包括该包的情况
下就可以按下面的方法获取资源

ClassLoader cl = this.getClass().getClassLoader();
InputStream is = cl.getResourceAsStream("com/yourcompany/"+abc.properties)

如果abc.properties是一个标准的properties文件的话 , 假设它的内容如下:

messageA = Ok!

则可以这样获取配置信息:
Properties props = new Properties();
props.load(is);
String messageA = props.getProperty("messageA ");

则messageA就会等于 "Ok"

当然properties也可以是XML格式,只要他符合http://java.sun.com/dtd/properties.dtd的规范并且声明了DOCTYPE declaration,就可以用props.loadFromXML(InputSteam in)方法载入property

ps:property 也提供store()和storeToXML方法保存属性
关于classLoader也可以看看 《classloader相关基础知识》 这个文章

相关推荐

    java配置文件.7z

    本压缩包“java配置文件.7z”包含了多种关键的Java项目配置,包括数据库连接、Maven仓库设置、MyBatis框架配置以及Spring框架配置。下面将对这些配置文件进行详细的解释: 1. **db.properties**: 这个文件通常...

    VS MAP 文件使用

    - 导航至 `Configuration Properties -> Linker -> Debugging`。 - 在 `Generate Map File` 设置项中选择 `Yes (/MAP)`。 2. **生成 COD 文件**: - 同样打开项目属性设置 (`Property`)。 - 转到 `...

    nacos-server-1.4.1-windows.7z安装包

    Nacos的配置可以通过修改`conf`目录下的`application.properties`文件进行,例如修改端口号、数据源配置、日志级别等。 七、Nacos监控 Nacos提供了丰富的监控指标,可以通过监控页面查看服务器的内存、CPU使用情况...

    r40_tinav2.1_最终验证通过_使用CB-S来验证SPI2.0成功_20171114_0945没有外层目录.7z

    全志R40平台的tinav2.1系统下打开SPI2接口 1、(可选修改) Q:\r40_tinav2.1\spi20_r40_tinav2.1\lichee\brandy\build.sh build_uboot() { if [ "x${PLATFORM}" = "xsun50iw1p1" ] || \ [ "x${PLATFORM}" = "xsun...

    proxool数据库连接池配置

    例如,如果项目使用的是MySQL数据库,则需要将`mysql-connector-java-x.y.z.jar`(MySQL官方提供的JDBC驱动)一同放置到该目录下。 ##### 2. 配置proxool.xml文件 接下来需要在`WEB-INF`目录下创建`proxool.xml`...

    log4j-2.15.0-rc2核心jar.7z

    - **配置SpringBoot**:在`application.properties`中设置日志配置文件路径: ``` logging.config=classpath:log4j2-spring.xml ``` 3. **使用与实践** - **日志输出**:在代码中使用`LoggerFactory.getLogger...

    Certinside 1Z0-207最新题库

    - **答案解析**:正确答案是B,即可以在/opt/portal/7.0/sys/eai_js目录下找到Infranet.properties文件。 ##### 5. 下列哪个操作码未在业务流程层实现? - **问题解析**:此题考查的是不同操作码在业务流程层的实现...

    springcloud-nacos.7z

    Nacos,全称为"Naming and Configuration Service",是阿里巴巴开源的一款基于Java的动态服务发现和配置管理框架,它在Spring Cloud生态中扮演着重要的角色。本文将深入探讨Nacos 1.4.2版本在Windows和Linux操作系统...

    dhcp-c3p0-jar包.7z

    DHCP (Dynamic Host Configuration Protocol) 是一种网络协议,主要用于自动分配、管理IP地址和其他网络配置信息,使得网络设备(如计算机、路由器等)能够迅速接入网络。然而,标题中的"dhcp-c3p0-jar包.7z"实际上...

    http-->https后端Java接口spring boot项目配置文件及生成证书的方法.7z

    @Configuration public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .requiresChannel() .anyRequest...

    bmi160调通bmi160的ACC+GYR_20160907.7z

    Z:\home\wwt\only_bma250_r58\android\device\softwinner\common\hardware-common\libhardware\libsensors\aw_sensors\sensorDetect.cpp struct sensor_extend_t gsensorList[] = { { { "bma250", LSG_BMA250, }...

    Spring Boot核心技术-笔记-pdf版.7z

    `application.properties`或`application.yml`是常用的配置文件,它们允许我们在不修改代码的情况下改变应用的行为。 最后,笔记可能会介绍Spring Boot的测试支持,包括单元测试和集成测试。`@SpringBootTest`和`@...

    Visual Studio 2005 制作DLL文件1

    - 在“Configuration Properties”中,选择“Linker”->“Input”->“Additional Dependencies”。 - 输入`Dll1.lib`,点击“Apply”保存设置。 4. **编写调用代码**:在`MainApp`中编写代码来调用`add`和`...

    ssh框架步骤详细解释

    - 将`log4j.properties`文件放置于项目的`src`目录下,用于配置日志记录规则。 - 将`struts-2.1.7.dtd`和`struts.xml`放置于`src`目录下,它们是Struts2的核心配置文件。 #### 三、集成Hibernate 1. **添加...

    mybasedemo.7z

    标题 "mybasedemo.7z" 提供了一个线索,它是一个使用7-Zip压缩格式的文件,可能包含了一个基于SpringBoot的项目实例。这个项目利用了MyBatis和MyBatis Generator来自动化数据库操作的配置和代码生成。下面将详细讨论...

    struts1.2验证框架示例

    **ApplicationResources.properties** 文件主要用于定义错误消息的国际化文本。在这个文件中,我们可以看到定义了一系列错误消息,这些错误消息对应于不同的验证失败情况。例如: - `errors.required={0}\u4e0d\u80...

    spirngboot链接SAP RFC.都是最新版,看上传时间.7z

    - 可以利用SpringBoot的自动配置特性,创建一个自定义的`@Configuration`类,以更优雅的方式管理SAP连接的生命周期和初始化过程。 5. **编写业务逻辑**: - 根据项目需求,将RFC调用融入到业务逻辑中。例如,你...

    mybatis生成器gradle插件(MBG)

    configurationFile = file('generatorConfig.xml') // 配置文件路径 outputDir = file('src/main/java') // 输出目录 classpathElements = [ 'path/to/jdbc/driver.jar' ] // JDBC驱动路径 } ``` 在`...

    sza-t2-access:Zadanie domowe z kursu Spring Boot 2 SZA-Tydzień2

    【标题】"sza-t2-access:Zadanie domowe z kursu Spring Boot 2 SZA-Tydzień2" 暗示这是一项基于Spring Boot 2的课程作业,可能涉及Spring Security或访问控制方面的内容。在Spring Boot 2框架中,Spring Security...

Global site tag (gtag.js) - Google Analytics