给什么平台,跳什么舞

第9章 为有源头活水来-使用SQLite、ContentProvider与Preferences处理数据

前言:Preferences机制广泛应用于存储应用程序中的配置信息,键值对的形式存储在应用程序的私有Preferences目录

 

9.1 文件I/O

java.io.FileInputStream & java.io.FileOutputStream & java.io.File

每个应用程序所在的包都有一个私有的存储数据的目录,只有属于这个包中的应用程序才有写入的权限。/data/data/<包名>/

/sdcard/目录是SD卡对应的目录

文件系统中其他的系统目录,第三方应用程序都不可写。

FileOutputStream
    private void setLaunchMode(String filename, String mode) {
        try {
            FileOutputStream is = new FileOutputStream(filename);
            byte buffer[] = mode.getBytes();
            is.write(buffer);
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
FileInputStream
    private String getLaunchMode(String filename) {
        String launchMode = "";
        try {
            File mFile= new File(filename);
            if (mFile.exists()) {
                FileInputStream is = new FileInputStream(filename);
                int length = is.available();
                byte buffer[] = new byte[length];
                is.read(buffer);
                launchMode = EncodingUtils.getString(buffer, "UTF-8");
                is.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return launchMode;
    }

 

9.2 SQLite 数据库

 

 

9.4 使用Preferences存储应用程序数据

Preferences是一种轻量级的数据存储机制,它将一些简单数据类型的数据,包括boolean、int、float、long、String类型的数据,以键值对的形式存储在应用程序的私有Preferences目录

(data/data/<包名>/shared_prefs) 

这种机制广泛应用于存储应用程序中的配置信息。

用一个Context的对象调用getSharedPreferences(String name, int mode)方法传入Preferences文件名和打开模式,就可以获得一个SharedPreferences的对象。

[读取]利用SharedPreferences对象可以调用一些getter方法,传入相应的键来读取数据。

[修改]利用SharedPreferences对象调用edit()方法获得一个内部类Editor对象,然后用这个Editor对象就可以对Preferences文件进行编辑了,编辑完后调用commit()方法提交。

Preferences
public class Preferences extends Activity{
    EditText edit;
    SharedPreferences sp;
    final static String PREF = "MY_PREF";
    final static String EDIT_KEY = "EDIT_CONTENT";
    
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        edit = (EditText)findViewById(R.id.edittext);
        sp = getSharedPreferences(PREF, 0);
        String initial = sp.getString(EDIT_KEY, null);
        if (initial != null){
            edit.setText(initial);
        }
    }
    public void onDestroy(){
        SharedPreferences.Editor editor = sp.edit();
        editor.putString(EDIT_KEY, String.valueOf(edit.getText()));
        edit.commit();
        super.onDestroy();
    }        
}

 

 

 

 

 

 

posted @ 2013-11-27 11:33  Jimwind  阅读(183)  评论(0编辑  收藏  举报
==============精通*学习*关注==============