平時的我們如果想要保資訊,一般的做法就是記在本子上,然後在使用的時候從本子中拿出來。android儲存資料的方式也可以像是這樣先將資料儲存在檔案中,然後再從檔案中讀取。採取這種方式,我們可以在程式間共用資訊,但預設下,android的檔案是私人的,要想共用,需要許可權。
例子就用上一篇文章中的CheckBox,用檔案的方式儲存點擊狀態(例子的詳情請看:http://www.cnblogs.com/wenjiang/archive/2013/06/02/3114017.html)
直接就是代碼:
private boolean isCheck; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); CheckBox checkbox = (CheckBox) this.findViewById(R.id.checkbox); getProperties(); checkbox.setChecked(isCheck); checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { isCheck = isChecked; } }); } private boolean saveProperties() { Properties properties = new Properties(); properties.put("info", String.valueOf(isCheck)); try { FileOutputStream out = this.openFileOutput("info.cfg", Context.MODE_WORLD_WRITEABLE); properties.store(out, ""); } catch (FileNotFoundException e) { return false; } catch (IOException e) { return false; } return true; } private void getProperties() { Properties properties = new Properties(); try { FileInputStream in = this.openFileInput("info.cfg"); properties.load(in); } catch (FileNotFoundException e) { return; } catch (IOException e) { return; } isCheck = Boolean.valueOf(properties.getProperty("info").toString()); } public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { saveProperties(); this.finish(); return true; } return super.onKeyDown(keyCode, event); }
由於涉及到I/O,所以異常處理機制必要的。流程是這樣的:我們先使用put()將資料打包,同樣是索引值對,然後通過store()將資料儲存在指定的檔案中,如果沒有,就建立一個,最後再通過load()讀取檔案內容。load()讀取檔案內容並不直接取出資料,它是將檔案內容放在properties中,所以我們需要通過get()方法取出相應的資料。
內容確實非常簡單,權當記錄吧。