設定ファイルを使う

コンフィグファイルが必要になる機会は結構多いですよね
特に記憶する内容がなくても、ウィンドウの位置や大きさは保持したいものです
テキストを入出力するクラスはあるし行単位で読みこめばそう難しいことでもないのですが、
設定ファイルを操作するPropertiesクラスがあります

//        読み込み-----------------------------
        Properties prop =new Properties();
        
        FileInputStream fis=new FileInputStream("setting.txt");
        prop.load(fis);
        fis.close();

//        文字コードを指定する場合は下記のように
//        InputStreamReader isr=new InputStreamReader(fis, "SJIS");
//        prop.load(isr);
//        isr.close();

//        値を読み込む
        String s1=prop.getProperty("hoge");//キーを指定して値を読み込みます(個人的に非推奨)
        String s2=prop.getProperty("bar", "zako");//キーが無かった時のデフォルト値を決めておきます(推奨)
        
//        したいことをする
        
//        書き込み-----------------------------
        prop.setProperty("hoge", s1);
        prop.setProperty("bar", s2);
        
        FileOutputStream fos=new FileOutputStream("setting.txt");
        prop.store(fos, "English only");//ファイル冒頭にコメントをつけることができる
        fos.close();

//        文字コードを指定する場合は下記のように
//        OutputStreamWriter osw=new OutputStreamWriter(fos, "SJIS");
//        prop.store(osw, "日本語おーけー");
//        osw.close();
    }

まあ便利です
文字コードについてはJava文字列メモ(Hishidama's Java String Memo)
に詳しく乗ってます。ひしだま様も神様ですね
この方とJavaの学習ならJavaDriveのTATSUO IKURA様お二方のサイトが潰れない限りなんでも作れる気がします
万が一のためにごっそり保存したいくらいです

ここにあるやり方でファイルを生成すると、bar=zakoみたいな形式で一行ずつ書かれたファイルができます
loadFromXMLとstoreToXMLを使えばxml形式にすることもできます

このクラスの唯一そして最大の欠点は、生成されるファイルは、キーを格納した順番にならないということです
もし細かい設定でアプリ上に設定項目がなく、変えたかったらファイルいじってね、と言う仕様の場合見難いことこの上ないです
最近それに耐えられなくなり、自分でパクリクラスを作りました
次回にでも紹介します