XmlSerializer なんかをイジって、xml 関係がだいたい飲み込めた。
しかし、データ・フォーマットを考えるのはめんどくさい。読み込み部が専用になるのも、なんかアレよね。
読み込みは遅いが、やっぱ融通の効くSharedPreferences は便利だ。
しかし、SharedPreferences は外部ファイルを読み込めない…。
なら作ってしまえ、というワケ。
どうせint とString しか使う予定もないし。
そんなに面倒でもないだろう。
package com.migimaki.android;
import android.content.Context;
import java.io.FileInputStream;
import android.util.Xml;
import org.xmlpull.v1.XmlPullParser;
import android.util.Log;
/*
* Preferences Reader クラス
*
*/
public class PrefReader {
private Context context;
public String fPath = "/";
//====================
//初期化
//====================
/**
* コンストラクタ
*/
public PrefReader( Context c, String fPath ){
context = c;
this.fPath = fPath;
//--
}
//====================
// read method
//====================
////////////
/// Read Int
public int getInt( String key, int default_i ){
int result = default_i;
//--
try{
FileInputStream is = new FileInputStream( fPath );
XmlPullParser xmlPullParser = Xml.newPullParser();
xmlPullParser.setInput( is, "UTF-8" );
int i = xmlPullParser.getEventType();
do{
if( i == XmlPullParser.START_TAG
&& xmlPullParser.getName().equals( "int" )
&& xmlPullParser.getAttributeValue( null, "name" ).equals( key )
){
result = Integer.parseInt( xmlPullParser.getAttributeValue( null, "value" ) );
break;
}
i = xmlPullParser.next();
}while ( i != XmlPullParser.END_DOCUMENT );
is.close();
}catch( Exception ex ){
Log.d( "Err", "PrefReader : getInt" );
}
//--
// Log.d( "TEST", "PrefReader " +key +":" +result );
return result;
}
///==
////////////
/// Read String
public String getString( String key, String default_s ){
String result = default_s;
//--
try{
FileInputStream is = new FileInputStream( fPath );
XmlPullParser xmlPullParser = Xml.newPullParser();
xmlPullParser.setInput( is, "UTF-8" );
int i = xmlPullParser.getEventType();
do{
if( i == XmlPullParser.START_TAG
&& xmlPullParser.getName().equals( "string" )
&& xmlPullParser.getAttributeValue( null, "name" ).equals( key )
){
result = xmlPullParser.nextText();
break;
}
i = xmlPullParser.next();
}while ( i != XmlPullParser.END_DOCUMENT );
is.close();
}catch( Exception ex ){
Log.d( "Err", "PrefReader : getString" );
}
//--
// Log.d( "TEST", "PrefReader " +key +":" +result );
return result;
}
///==
}
できた。int とString だけだけど。(w
各method でFileInputStream を設定しているのは、そうしないと読み込み位置が保持されてしまうため。
SharedPreferences には、int とString の他に、boolean, float などなどがある。
それらはおそらく、int とほぼ変わりがないだろうと思う。
必要になったら、作るとしよう。


![著作権フリー背景素材集[家]](http://img.dlsite.jp/modpub/images2/work/doujin/RJ089000/RJ088095_img_mini.jpg)





migimaki.com











![著作権フリー背景素材集[家]](http://img.dlsite.jp/modpub/images2/work/doujin/RJ089000/RJ088095_img_sam.jpg)
右巻きソフトウェア
