工作积累(二)——使用java.util.ResourceBundle和java.util.Properties实现常量功能

在 Java 中我们往往通过定义常量来使用一些值,方便我们进行修改配置,如:

public classConstant {
  public static final String IMG_ORI_PATH = “ori/”;
  public static final String IMG_THUMB_PATH = “thumb/”;
  ……
}

这样我们在其他类中可以直接使用 Constant.IMG_ORI_PATH 来代替 “ori/” ,使用 Constant.IMG_THUMB_PATH 来代替 “thumb/”,等等。一旦这些路径发生改变,只需要修改 Constant 类,其他类不受影响,相信绝大多数开发人员对这一点很熟悉。然而,如果现在项目已经上线,还需要重新编译该类为.class 文件,相对来说时间成本比较大,而通过java.util.ResourceBundle 或 java.util.Properties 两个类,我们可以大大减小这一时间成本。

ResourceBundle 通常用于针对不同的语言,即国际化来使用,只能针对.properties 文件,当然在这里我们不讨论国际化,只是用它来实现 Properties 的功能。如果程序中的属性文件只是一些配置,并不是针对多国语言,那么也可以使用 Properties ,该类可以针对 .properties .xml.txt 等各种类型的文件。

1. ResourceBundle

在项目的src/main/resources 目录下,创建一个自定义的 systemconfig.properties 文件。.properties 文件中的内容为 key-value 型,我们可以在其中添加如下值:

img.ori.path=ori/

img.thumb.path=thumb/

之后使用 ResourceBundle 来取值:

ResouceBundle resourceBundle = ResourceBundle.getBundle(“systemconfig”);
String oriPath = resourceBundle.getString(“img.ori.path”);
String thumbPath = resourceBundle.getString(“img.thumb.path”);

2. Properties

同样,在项目的src/main/resources 目录下,创建一个自定义的 systemconfig.txt文件,文件内容与上面的systemconfig.properties 相同,之后使用 Properties 来取值:

Properties properties = new Properties();
FileInputStream fileInputStream = new FileInputStream(Thread.currentThread().getContextClassLoader().getResource(“systemconfig.txt”).getPath());
properties.load(fileInputStream);
String oriPath = properties.getProperty(“img.ori.path”);
String thumbPath = properties.getProperty(“img.thumb.path”);

当然,这里的systemconfig.txt 可以放在系统中的任何位置,只要在 new FileInputStream() 中明确文件路径即可。

通过以上两种方法,在路径发生变化时,我们只需要修改配置文件,无需重新编译.class 文件,节约的时间可以喝杯咖啡啦。

时间: 2024-10-12 12:55:35

工作积累(二)——使用java.util.ResourceBundle和java.util.Properties实现常量功能的相关文章

工作积累(五)——使用[email protected]注解实现常量功能

之前的博客中提到过如何通过 java.util.ResourceBundle 和 java.util.Properties类通过读取 key-value 文件的形式实现常量功能.其实 spring 已经通过@Value 注解实现,下面看看如何使用. 1.创建.properties文件: 在如下目录创建 keyvalue.properties文件src/main/resources/META-INF/spring/keyvalue.properties ,写入如下内容: test.value=il

【转】java.util.ResourceBundle使用详解

原文链接:http://lavasoft.blog.51cto.com/62575/184605/ 人家写的太好了,条理清晰,表达准确. 一.认识国际化资源文件 这个类提供软件国际化的捷径.通过此类,可以使您所编写的程序可以: 轻松地本地化或翻译成不同的语言 一次处理多个语言环境 以后可以轻松地进行修改,支持更多的语言环境 说的简单点,这个类的作用就是读取资源属性文件(properties),然后根据.properties文件的名称信息(本地化信息),匹配当前系统的国别语言信息(也可以程序指定)

java.util.ResourceBundle使用详解

一.认识国际化资源文件 这个类提供软件国际化的捷径.通过此类,可以使您所编写的程序可以: 轻松地本地化或翻译成不同的语言 一次处理多个语言环境 以后可以轻松地进行修改,支持更多的语言环境 说的简单点,这个类的作用就是读取资源属性文件(properties),然后根据.properties文件的名称信息(本地化信息),匹配当前系统的国别语言信息(也可以程序指定),然后获取相应的properties文件的内容. 使用这个类,要注意的一点是,这个properties文件的名字是有规范的:一般的命名规范

java.util.ResourceBundle用法详解

初识国际化和ResourceBundle 这个类主要用来解决国际化和本地化问题.国际化和本地化可不是两个概念,两者都是一起出现的.可以说,国际化的目的就是为了实现本地化,详细的介绍可以看本文的最后.比如对于"取消",中文中我们使用"取消"来表示,而英文中我们使用"cancel".若我们的程序是面向国际的(这也是软件发展的一个趋势),那么使用的人群必然是多语言环境的,实现国际化就非常有必要.而ResourceBundle可以帮助我们轻松完成这个任务

【java】读取资源文件key->value,java.util.ResourceBundle

1 package 国际化; 2 3 import java.util.ResourceBundle; 4 5 public class TestResource { 6 public static void main(String[] args) { 7 ResourceBundle rb=ResourceBundle.getBundle("TestResource"); 8 System.out.println(rb.getString("name")); 9

java.util.ResourceBundle

ResourceBundle类通常是用于针对不同的语言来使用的不同语言属性文件: 使用这个类,要注意的一点是,它使用的properties文件的文件名是有规范的:一般的命名规范是: 自定义名_语言代码_国别代码.properties, 如果是默认的,直接写为:自定义名.properties 这三个文件必须放置到/src/目录下 import java.util.Locale; import java.util.ResourceBundle; public class TestResourceBu

[工作积累] NDK通过Java获取package name 和version

////////////////////////////////////////////////////////////////////////// //Java code snippet //get APK's versionCode in AndroidManifest.xml public int getVersionCode() { int versionCode = 1; try{ PackageInfo packageInfo = this.getPackageManager().g

[二维码生成和解析][Java]

首先必须的jar包文件:百度云盘下载   Qrcode.jar    Qrcode_Swetake.jar 这两个就是我们的主角 学习之前可以简单了解一下:二维码原理 新建JavaProject    新建lib文件夹 将jar文件复制进去,选中jar文件右键BuildPath -- Add to BuildPath (旁白:这么简单的操作你都还要讲!) 进入正题:   代码如下:    为方面同学理解 注释较多 请理解  如感不适  请见谅  (旁白:废话太多了 我要看代码!) 生成Qrcod

Java中ResourceBundle类的使用

原文地址: http://tutorials.jenkov.com/java-internationalization/resourcebundle.html java.util.ResourceBundle类用来存储文本以及本地化相关数据.本文将介绍ResourceBundle及它的子类. ResourceBundle的类层次结构 ResourceBundle类有两个子类,PropertyResourceBundle及ListResourceBundle.下面是这几个类的结构图. Proper