Javaのリソースデータ (2)

今回は、リソースデータとしてよく使われるPropertiesクラスについて書きます。
前回: id:simply-k:20100715:1278972561
次回: id:simply-k:20100721:1279748122
目次: id:simply-k:20100728:1280299110

プロパティ・ファイルからの読み込み (1.4以前からの形式)

ファイル形式のサンプル
#comment
diary.id=simply-k
diary.url=http://d.hatena.ne.jp/

拡張子は、一般的にpropertiesとする。

読み込みに使用するメソッド
  • Properties#load(InputStream in)
  • Properties#load(Reader reader)
サンプルコード
InputStream is = null;
try {
    is = new FileInputStream("test.properties");
    Properties props = new Properties();
    props.load(is);
    String id = props.getProperty("diary.id");
    String url= props.getProperty("diary.url");
    ...
} finally {
    if (is != null) {
        is.close();
    }
}
補足
  • エンコーディングは、「ISO 8859-1」として扱われる。そのため、日本語を直接記述できない。
  • 日本語データを記述したい場合は、Unicodeエスケープを使用する。通常は、native2asciiを使う。

プロパティ・ファイルからの読み込み (5.0でサポートされたXML形式)

ファイル形式のサンプル
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Comment</comment>
<entry key="id">simply-k</entry>
<entry key="url">http://d.hatena.ne.jp/</entry>
<entry key="name">とあるソフトウェア開発者のブログ</entry>
<entry key="message">
<![CDATA[
<a href="http://d.hatena.ne.jp/">
とあるソフトウェア開発者のブログ
</a>
]]>
</entry>
</properties>

拡張子は、一般的にxmlとする。

読み込みに使用するメソッド
  • Properties#loadFromXML(InputStream in)
サンプルコード
InputStream is = new FileInputStream("test.xml");
Properties props = new Properties();
props.loadFromXML(is);
String id = props.getProperty("id");
String message = props.getProperty("message").trim();
...
補足
  • XML形式のプロパティ・ファイルでは、必要に応じてエンコーディングを指定できる。
  • 日本語や改行を、直接記述できる。
  • 大小記号や引用符を記述するには、実体参照を使う。(「&lt;」など)
  • XMLのCDATAセクションを使えば、大小記号や引用符を直接記述できる。

その他

入力ストリームの扱い

  • Properties#load()は、入力ストリームを閉じない。
  • Properties#loadFromXML()は、入力ストリームを閉じる。


前回: id:simply-k:20100715:1278972561
次回: id:simply-k:20100721:1279748122
目次: id:simply-k:20100728:1280299110