2011年4月30日土曜日

native2asciiはやめてXMLのプロパティを使う

やりたいこと

XML形式のプロパティが使いたい。

なぜ?

native2asciiのエンコードされた日本語文字列はメンテナンスするのが面倒なので。

環境

JDK1.5以降

説明

とくに難しいことはしていません。storeToXML()とloadFromXML()しているだけです。プロパティから値を取得したい場合はgetProperty(キー)とかしてください。PropertiesのJavaDocとかも参照のこと。

サンプルコード

streamの扱いは適当なんで、BufferedOutputStreamとかBufferedInputStream使ってください。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;

public class Application {
    
    private static final String XML_PROPERTIES_NAME = "test";
    private static final String XML_PROPERTIES_NAME_SUFFIX = ".properties.xml";
    private static final String XML_PROPERTIES_FILE_NAME = XML_PROPERTIES_NAME + XML_PROPERTIES_NAME_SUFFIX;
    private static final String XML_COMMENT = "プロパティのコメント";

    private Properties getProperties() {
        Properties properties = new Properties();
        properties.setProperty("usage", "このプログラムの使用方法");
        properties.setProperty("test", "テスト文字列");

        return properties;
    }

    private void saveProp() throws IOException {
        Properties properties = getProperties();

        OutputStream stream = new FileOutputStream(XML_PROPERTIES_FILE_NAME);
        properties.storeToXML(stream, XML_COMMENT);

        stream.close();
    }

    private void loadProp() throws IOException {
        InputStream stream = new FileInputStream("test.properties.xml");

        Properties prop = new Properties();
        prop.loadFromXML(stream);

        stream.close();

        prop.list(System.out);
    }

    /**
     * @param args the command line arguments
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        Application app = new Application();
        app.saveProp();
        app.loadProp();
    }
}

0 件のコメント:

コメントを投稿