持久化存储的方式
android主要提供了三种存储方式:文件存储,SharePreference存储,数据库存储
一:文件存储
文件存储是android中最基本的一种数据存储方式,它不对存储内容进行任何格式化的处理,所有数据都原封不动的保存在文件中。比较适合存储一些简单的文本数据或二进制数据。
示例:注意必须先存再取,不然会报文件找不到异常
public class FileSaveActivity extends AppCompatActivity { private EditText fileSave; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_file_save); initView(); } private void initView() { fileSave = ((EditText) findViewById(R.id.fileSave)); String text = getFileData(); if (!TextUtils.isEmpty(text)) { fileSave.setText(text); } } @Override protected void onDestroy() { super.onDestroy(); String editText = fileSave.getText().toString(); fileSaveData(editText); } /** * 存文件 * * @param input */ private void fileSaveData(String input) { FileOutputStream outputStream = null; BufferedWriter writer = null; try { // 第一个参数为文件名,注意文件名不包含路径,所有的文件都是默认存储到/data/data/<packgename>/file目录下 // 第二个参数为文件操作模式取值有Context.MODE_PRIVATE为默认存储模式,当指定同样文件名时,所写入的内容会覆盖原文件中的内容 // Context.MODE_APPEND,如果文件已经存在,就往文件里追加。 outputStream = openFileOutput("data", Context.MODE_PRIVATE); writer = new BufferedWriter(new OutputStreamWriter(outputStream)); try { writer.write(input); } catch (IOException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (writer != null) { try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * 读取文件信息 * * @return */ private String getFileData() { FileInputStream fileInputStream = null; BufferedReader bufferedReader = null; StringBuilder content = new StringBuilder(); try { fileInputStream = openFileInput("data"); bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream)); String line = ""; try { while ((line = bufferedReader.readLine()) != null) { content.append(line); } } catch (IOException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); } finally { try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } return content.toString(); } }
二:SharePreference存储
SharePreference存储是使用键值对的方式来进行存储的
使用方式:例子没有使用,但是做了详细的说明,具体封装工具类:点击打开链接
public class ShareSaveActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_share_save); } /**获取SharedPreferences的对象三种方式 * 方式一:Context类中的获取方式 * 第一个参数用于指定sharepreference文件的名称。文件默认存放在/data/data/<packageName>/shared_prefs/目录下 * 第二个参数指定操作模式,只有这一种模式选择,标示只有当前应用应用程序才能对这个文件进行读取。 * * 方式二:Activity类中的获取方式 * 这个方式自动将当前活动的类名作为sharepreference文件的名称,参数为操作模式的指定 * * 方式三:通过PreferenceManager获取 * 自动使用当前应用程序的包名作为前缀来作为sharepreference文件的名称 * */ private void getSharedPreferences() { SharedPreferences sharedPreferences = getSharedPreferences("data", MODE_PRIVATE); SharedPreferences preferences = getPreferences(MODE_PRIVATE); SharedPreferences defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); } /** * 把值存入sharepreference中 * 使用步骤 * 1.获取 SharedPreferences对象 * 2.获取SharedPreferences.Editor对象 * 3.向editor中添加对象 * 4.通过调用apply()方法,将添加的数据提交 */ private void saveData(){ SharedPreferences sharedPreferences = getSharedPreferences("data", MODE_PRIVATE); SharedPreferences.Editor edit = sharedPreferences.edit(); edit.putString("key","value"); edit.putBoolean("isTrue",true); edit.apply(); } /** * 从sharepreference中取值 * 使用步骤 * 1.获取一个SharedPreferences的实例,传入的文件名称要和你之前存的一致 * 2.直接通过存的key和类型取出相应的值。 */ private void getData(){ SharedPreferences sharedPreferences = getSharedPreferences("data", MODE_PRIVATE); sharedPreferences.getString("key","没有取到值哎,估计没存"); } }
三:数据库存储 下一节做笔记吧~~~~~