ブログランキング・にほんブログ村へ


iPhone/iPad用潜水艦ゲームアプリ ソナーエコー iTunesにて公開中

2012年07月03日

Java簡単な設定ファイルの読み書き

Javaプログラムで、簡単な設定を保存しておきたい場合。
xmlを使うほど構造とかあるわけでもない、おおげさなものじゃないやつ。
windowsのiniとかその程度のもの。

srcfile=/asasasasaswewe/asas/asas/test.aaa
windowSize=300,222,11,22
sound=on

こういうやつ。

まず保存先だが、
System.getProperty("user.dir");
でそのときの作業ディレクトリを得る。
WindowsだとUsers下のローミングとかOS毎にこういうファイルを置く場所の作法ってのがあるけど、Javaはそんなこと知らないし、かまうべきでない。

以下自分の例そのまんまコピペ。
aryRecentSrcFilesというArrayListにある文字列をrecent0,recent1,recent2...と書き出し、読み込む。
気を付ける点はたいしたものはないが、
読み込み時BufferedReaderで行毎に読み出すためにreadLine()を使っていることと、
書き込み時BufferedWriterで改行コードをnewLine()で出しているところ。
あと、BufferedReader.readLine()は昔DataInputStream.readLine()だったみたいだが、これは現在非推薦となっていて、BufferedReaderを使うようにとのことらしい。

private File getSettingFile(){
String s = System.getProperty("user.dir");
String filePath = s + "/obj2aob.ini";
return new File( filePath );
}
private void saveSettings(){
//設定を保存
File file = getSettingFile();
try {
FileWriter writer = new FileWriter(file);
BufferedWriter bw = new BufferedWriter( writer );
for( int i=0;i<aryRecentSrcFiles.size();i++ ){
String line = "recent"+i+"="+aryRecentSrcFiles.get( i );
bw.write( line );
bw.newLine(); //改行
}
bw.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private void loadSettings(){
//設定を読み込み
File file = getSettingFile();
try {
FileReader reader = new FileReader( file );

BufferedReader in = new BufferedReader( reader );

HashMap<String,String> map = new HashMap();
for( ;; ){
String line = in.readLine();

if( line == null )break;

String[] words = line.split( "=",2 );

if( words != null && words.length == 2 ){
map.put( words[ 0 ],words[ 1 ] );
}
}
for( int i=0;;i++ ){
String value = map.get( "recent"+i );
if( value==null )break;
if( value.isEmpty() )break;
aryRecentSrcFiles.add( value );
}
} catch( FileNotFoundException e ){
//設定ファイルなし
} catch (IOException e) {
e.printStackTrace();
}
}
posted by みこあいさ at 12:20| JAVA