2011年4月30日土曜日

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

やりたいこと

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

なぜ?

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

環境

JDK1.5以降

説明

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

サンプルコード

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

  1. import java.io.FileInputStream;  
  2. import java.io.FileOutputStream;  
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import java.io.OutputStream;  
  6. import java.util.Properties;  
  7.   
  8. public class Application {  
  9.       
  10.     private static final String XML_PROPERTIES_NAME = "test";  
  11.     private static final String XML_PROPERTIES_NAME_SUFFIX = ".properties.xml";  
  12.     private static final String XML_PROPERTIES_FILE_NAME = XML_PROPERTIES_NAME + XML_PROPERTIES_NAME_SUFFIX;  
  13.     private static final String XML_COMMENT = "プロパティのコメント";  
  14.   
  15.     private Properties getProperties() {  
  16.         Properties properties = new Properties();  
  17.         properties.setProperty("usage""このプログラムの使用方法");  
  18.         properties.setProperty("test""テスト文字列");  
  19.   
  20.         return properties;  
  21.     }  
  22.   
  23.     private void saveProp() throws IOException {  
  24.         Properties properties = getProperties();  
  25.   
  26.         OutputStream stream = new FileOutputStream(XML_PROPERTIES_FILE_NAME);  
  27.         properties.storeToXML(stream, XML_COMMENT);  
  28.   
  29.         stream.close();  
  30.     }  
  31.   
  32.     private void loadProp() throws IOException {  
  33.         InputStream stream = new FileInputStream("test.properties.xml");  
  34.   
  35.         Properties prop = new Properties();  
  36.         prop.loadFromXML(stream);  
  37.   
  38.         stream.close();  
  39.   
  40.         prop.list(System.out);  
  41.     }  
  42.   
  43.     /** 
  44.      * @param args the command line arguments 
  45.      * @throws IOException 
  46.      */  
  47.     public static void main(String[] args) throws IOException {  
  48.         Application app = new Application();  
  49.         app.saveProp();  
  50.         app.loadProp();  
  51.     }  
  52. }  

0 件のコメント:

コメントを投稿