2012年12月3日月曜日

一人Advent Calendar 3日目(JavaでYamlファイル読み込みその3)

毎日ブログ書くのがこんなにも大変だとは思ってなかったです。

今日はホント少ないけど継続は力なりってことで書きます。

前回まででYamlで様々なオブジェクトが扱えるようになったので今日は複数のオブジェクトを扱います。

まずはシリアライズ
シリアライズにはYamlEncodeクラスを使います

 
  List <Integer> list1 = new ArrayList < >();
  list1.add(10);
  list1.add(11);
  list1.add(12);
  
  List <Integer> list2 = new ArrayList < >();
  list2.add(0);
  list2.add(1);
  list2.add(2);
  
  YamlEncoder enc = new YamlEncoder(new FileOutputStream("hoge.yml"));
  enc.writeObject(list1);
  enc.writeObject(list2);
  enc.close();
シリアライズした結果のファイルは以下です。
 
--- 
- 10
- 11
- 12
--- 
- 0
- 1
- 2

次はこのファイルをデシアライズします。
デシリアライズにはYamlDecoderクラスを使います
サンプルには2種類やり方があったので2種類載せときます
まずは1種類目
  YamlDecoder dec = new YamlDecoder(new FileInputStream(new File("hoge.yml")));
  while (true) {
   Object object = dec.readObject();
   System.out.println(object);
  }
こっちが2種類目
  for (Object object : Yaml.loadStream(new FileInputStream(new File("hoge.yml")))) {
    System.out.println(object);
  }

2番目のほうが要素の数がわかってなくてもエラーがでないから良い感じ。
基本的にはこっちを使えばよさげ。

3日間もYamlファイルでお茶を濁した間はありますがこれでYamlはひと通り終わりです。
明日からなに書こうかな・・・

0 件のコメント:

コメントを投稿