[Java How To Programming] [Home on 246net] [Home on Alles net]
Powered by SmartDoc

プロパティ・ファイルを読み込む

2010/11/22 12:40:21
TAKAHASHI,Toru

目次

プロパティ・ファイルを読み込む

プロパティは、プログラム外部に定義したデータを読み込み、プログラム内で扱う仕組みで、いわゆる設定ファイルを実現するものです。java.util.Propertiesクラスによってその機能が提供されています。

プロパティ・ファイルの形式

プロパティ・ファイルの形式は、<キー> = <値>というテキスト形式とXML形式の2つがあります。また、テキスト形式については、文字コードがISO 8859-1ラテン文字で記述する方式と、任意の文字コードで記述し読み込み時に指定する方法があります。

プロパティ・ファイルの形式と文字コード、特に日本語の扱い
ファイル形式 文字コード 日本語の扱い
テキスト形式(1) ISO 8859-1 ユニコードエスケープ形式で記述
テキスト形式(2) 任意 使用する文字コードで記述
XML形式 任意 使用する文字コードで記述

ユニコードエスケープ形式に変換するには、JDK付属のnative2asciiコマンドを使用します。主要な統合開発環境(Eclipse, NetBeansなど)は、プロパティ・ファイルを読み書きするときに自動でこの変換を行う機能を持っています。

テキスト形式(1)

テキスト形式(1)は、プロパティのキーと値を1行に1つ定義します。記述方法は、キーと値を=で結ぶ形式です。文字コードは、ISO 8859-1でエンコーディングされている必要があり、このエンコーディングで表現できない文字(例えば日本語)は、Unicodeエスケープ表現で記述する必要があります。例を次に示します。

プロパティ・ファイル(テキスト形式: Unicodeエスケープ表 現)の例
# Comment in English
this.is.a.key = hello properties
that.is.a.key = good morning
# \u65e5\u672c\u8a9e\u3067\u30b3\u30e1\u30f3\u30c8
sample.number = 1283
# \u65e5\u672c\u8a9e\u3067\u5024\u3092\u8a18\u8ff0
sample.message.ja = \u3053\u3093\u306b\u3061\u306f\u3001\u3042\u304b\u3061\u3083\u3093

テキスト形式(2)

テキスト形式(2)は、テキスト形式(1)と同じプロパティの定義方法ですが、文字コードを任意なエンコーディングで記述したものです。日本語が表現可能なエンコーディング(UTF-8, SJIS, EUC_JPなど)でプロパティ・ファイルを記述し、使用することができます。例を次に示します。

プロパティ・ファイル(テキスト形式)の例
# Comment in English
this.is.a.key = hello properties
that.is.a.key = good morning
# 日本語でコメント
sample.number = 1283
# 日本語で値を記述
sample.message.ja = こんにちは、あかちゃん

XML形式

XML形式は、DTDで定義されるXMLボキャブラリで、Javadoc APIのjava.util.Propertiesに記載されています。XMLなので、エンコーディングはXML宣言行にencoding属性で記述できるため、日本語もそのまま記述することができます。例を次に示します。

プロパティ・ファイル(XML形式)の例
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
  <comment>java.util.PropertiesのXML形式設定ファイル</comment>
  <entry key="this.is.a.key">hello properties</entry>
  <entry key="that.is.a.key">good morning</entry>
  <entry key="sample.number">1283</entry>
  <entry key="sample.message.ja">こんにちは、あかちゃん</entry>
</properties>

プロパティ・ファイルを読み込む

テキスト形式(1)のプロパティ・ファイルを読み込む

テキスト形式(1)のプロパティ・ファイルは、文字コードISO 8859-1でエンコーディングされており、java.util.Propertiesクラスのメソッドvoid load(InputStream inStream)で読み込みます。例を次に示します。

テキスト形式(1)のプロパティ・ファイルを読み込む
private static Properties loadIso8859Properties(String path) throws IOException {
    Properties prop = new Properties();
    prop.load(new FileInputStream(path));
    return prop;
}

テキスト形式(2)のプロパティ・ファイルを読み込む

テキスト形式(2)のプロパティ・ファイルは、任意の文字コードでエンコーディングしたもので、エンコーディングに使用した文字コードを指定して読み込み処理を記述します。java.util.Propertiesクラスのメソッドvoid load(Reader reader)で読み込みます。UTF-8を使用した例を次に示します。

テキスト形式(2)のプロパティ・ファイルを読み込む
private static Properties loadUtf8Properties(String path) throws IOException {
    Properties prop = new Properties();
    prop.load(new InputStreamReader(new FileInputStream(path), "UTF-8"));
    return prop;
}

XML形式のプロパティ・ファイルを読み込む

XML形式のプロパティ・ファイルは、java.util.Propertiesクラスのメソッドvoid loadFromXML(InputStream in)で読み込みます。例を次に示します。

XML形式のプロパティ・ファイルを読み込む
private static Properties loadXmlProperties(String path) throws IOException {
    Properties prop = new Properties();
    prop.loadFromXML(new FileInputStream(path));
    return prop;
}

参考文献

日本語で参照できる参考文献