android 数据存储
来源:互联网 发布:制造头像软件下载 编辑:程序博客网 时间:2024/06/07 09:23
一:Shared Preferences:用来存储私有的、原始类型的、简单的数据,通常是Key-value对
二:Internal Storage:在设备内部存储器中存储数据
三:External Storage:在设备的扩展存储上保存数据,通常是SD卡
一. Shared Preferences
//写入 注意:所有的写入操作应该在一个Editor里面,也就是不要调用多次sp.edit()方法,每调用一次就会创建一个EditorSharedPreferences sp =getSharedPreferences("SP",Activity.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();editor.putString("param1", "sp1");editor.putInt("param2", 222);editor.commit();//读取SharedPreferences sp =T2.this.getSharedPreferences("SP",Activity.MODE_PRIVATE);String p1 = sp.getString("param1","");int p2 = sp.getInt("param2",0);//清除指定数据SharedPreferences userSettings= getSharedPreferences("setting", 0);SharedPreferences.Editor editor = userSettings.edit();editor.remove("KEY");editor.commit();//清空数据SharedPreferences.Editor editor = userSettings.edit();editor.clear();editor.commit();
SharedPreferences的数据以xml存储在data/data/包名/shared_prefs下面
2:getPreferences():如果一个preferences文件仅仅在当前的Activity中使用的话,你可以使用这个方法,无需要提供识别的名称。getPreferences(int mode)不需要传递文件名,默认使用不带包名的类名作为文件名(即Activity java文件名,不带后缀)
两者的具体区别请看 http://blog.csdn.net/a591193965/article/details/51105298
Activity.MODE_PRIVATE:表示该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Activity.MODE_APPEND:也是私有数据,新写入的内容会追加到原文件中
Activity.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取
Activity.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入
二:Internal Storage
当应用程序被安装到系统中后,其所在的包会有一个文件夹用于存放自己的数据,只有这个应用程序才有对这个文件夹的写入权限,这个私有的文件夹位于Android系统的/data/data/<应用程序包名>目录下,其他的应用程序都无法向这个文件夹中写入数据。要读取应用自己的私有文件,就不能直接使用Java I/O的API了,需要使用Activity提供的方法:openFileInput或openFileOutput。
在使用openFileOutput方法的时候,需要指定打开的模式:
1:MODE_PRIVATE:默认模式,文件只可以被调用该方法的应用程序访问
2:MODE_APPEND:如果文件已存在就向该文件的末尾继续写入数据,而不是覆盖原来的数据。
3:MODE_WORLD_READABLE:赋予所有的应用程序对该文件读的权限。
4:MODE_WORLD_WRITEABLE:赋予所有的应用程序对该文件写的权限。
//openFileOutput的调用返回一个FileOutputStream对象String username = mUsernameET.getText().toString(); String password = mPasswordET.getText().toString(); FileOutputStream fos = null; try { fos = openFileOutput("login", MODE_PRIVATE);// 获得文件输出流 fos.write((username + " " + password).getBytes());// 保存用户名和密码 fos.flush();// 清除缓存 } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.close();// 关闭文件输出流 } catch (IOException e) { e.printStackTrace(); } } } //openFileInput的调用返回一个FileInputStream 对象FileInputStream fis = null; byte[] buffer = null; try { fis = openFileInput("login");// 获得文件输入流 buffer = new byte[fis.available()];// 定义保存数据的数组 fis.read(buffer);// 从输入流中读取数据 } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close();// 关闭文件输入流 } catch (IOException e) { e.printStackTrace(); } } } String data = new String(buffer);// 获得数组中保存的数据 String username = data.split(" ")[0];// 获得username String password = data.split(" ")[1];// 获得password mUsernameTV.setText("账号:" + username);// 显示用户名 mPasswordTV.setText("密码:" + password);// 显示密码
- Android | Android数据存储
- Android数据存储--网络存储
- Android数据存储:File存储
- Android 数据存储--文件存储
- android 数据存储-文件存储
- Android数据存储----File 存储
- Android的数据存储
- Android数据存储
- Android数据存储
- Android 数据存储
- Android数据存储
- Android数据存储
- android中的数据存储
- Android 数据存储总结
- Android-数据存储
- Android 数据存储
- android数据存储
- Android 数据存储方式
- Kaggle比赛整理
- 什么是递归?
- Deep Learning(深度学习)资料汇总
- 教程:Win8.1系统使用组策略限制网速
- Android 支付宝H5 没有回调
- android 数据存储
- HDU:2022 海选女主角
- MFC实现加载光标改变鼠标的形状
- Django框架之 Admin(后台管理)
- 01背包问题及空间优化
- Fiori2.0学习笔记-路由导航
- 给iOS Simulator安装App
- 自定义view之draw篇
- 非常好的硬件启动流程说明