关于android:数据存储与访问-Andorid开发期末复习2

6次阅读

共计 1722 个字符,预计需要花费 5 分钟才能阅读完成。

每次程序启动会读取配置文件,个别应用 INI 文件或 XML 文件或自定义,然而应用这些文件很繁琐
改良?
SharedPreferences! 将 NVP(name/valuePair)保留在 Android 文件系统中
它屏蔽课对文件系统的操纵过程
它有三种拜访模式:
MODE_PRIVATE,
MODE_WORLD_READABLE,
MODE_WORLD_WRITEABLE,

SharedPreferences 的实现

  1. 定义拜访模式

    public static int MODE = Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE;
  2. 定义名称

    public static final String PREFERENCE_NAME = "SaveSetting";
  3. 将模式和参数名称作为参数传递给 getSharedPreferences(),获取其实例
 SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCE_NAME, MODE);
  1. 通过 SharedPreferences.Editor 对 SharedPreferences 进行批改,调用 commit()进行提交

     private void saveSharedPreferences(){SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCE_NAME, MODE);
           SharedPreferences.Editor editor = sharedPreferences.edit();
           
           editor.putString("Name", nameText.getText().toString());
           editor.putInt("Age", Integer.parseInt(ageText.getText().toString()));
           editor.putFloat("Height", Float.parseFloat(heightText.getText().toString()));
           editor.commit();}
  2. 获取曾经保留的 SharedPreferences 中的数据

    private void loadSharedPreferences(){SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCE_NAME, MODE);
           String name = sharedPreferences.getString("Name","Tom");
           int age = sharedPreferences.getInt("Age", 20);
           float height = sharedPreferences.getFloat("Height",1.81f);
         ...       
     }

SharedPreferences 的文件保留在哪?
<data/data/<packege name>/shared_prefs

文件存储 -> 程序如何读写流式文件?
openFileOutput()和 openFileInput()

openFileOutput()的应用(为了写入数据而关上文件)

FileOutputStream fos = openFileOutput(FILE_NAME,Context.MODE_APPEND);

String text = entryText.getText().toString();
fos.write(text.getBytes());
labelView.setText("文件写入胜利,写入长度:"+text.length());
entryText.setText("");
fos.flush();
fos.close();

openFileInput()的应用(为了读取数据而关上文件)

FileInputStream fis = openFileInput(FILE_NAME);
byte[] readBytes = new byte[fis.available()];
while(fis.read(readBytes) != -1){}
正文完
 0