安卓数据存储详解-孙霞霞著
- 格式:docx
- 大小:31.42 KB
- 文档页数:10
【sharePreferences】共享参数:概念:SharedPreferences是Android系统提供的一个通用的数据持久化框架,用于存储和读取key-value类型的原始基本数据类型对,目前支持String、int、long、float、boolean等基本类型的存储,对于自定义的对象数据类型,无法使用SharedPreferences来存储。
他通常以xml文件方式存储在data文件夹中,文件存储路径:/data/data/{appPackageName}/shared_prefs/{filename}SharedPreferences主要用于存储系统的配置信息。
例如上次登录的用户名,上次最后设置的配置信息(如:是否打开音效、是否使用振动,小游戏的玩家积分等)。
当再次启动程序后依然保持原有设置。
SharedPreferences用键值对方式存储,方便写入和读取。
注:SharePreferenced本身的对象不能对数据进行存储和修改,只能获取到数据,是通过Editor的实例化对象对数据进行存储和修改。
常用方法1.Context.getSharedPreferences(String, int mode)mode的属性值有:Context.MODE_PRIVATE:指定该SharedPreferences的数据只能被本应用程序读、写Context.MODE_APPEND:新内容追加到原内容后Context.MODE_WORLD_READABLE: 指定 SharedPreferences数据能被其他应用程序读,但是不支持写Context.MODE_WORLD_WRITEABLE: 指定 SharedPreferences数据能被其他应用程序读、写会覆盖原数据;可以使用"+"连接这些权限2.contains(String key)3.Map<String,?> getAll()4.getString(String key, String defValue)5.SharedPreferences.Editor edit()putString(String key, String value)putStringSet(String key, Set<String> values)putBoolean(String key, boolean value)clear()commit() 编辑完数据之后必须提交SharePreferenced存储数据的方法1.创建一个SharePreferenced的对象:SharedPreferences pref = getSharedPreferences("name_pref", MODE_PRIVATE);2.创建一个Editor的对象 : editor = pref.edit();3.然后调用Editor对象的putXxx方法,把指定的key值和他相对应的数据存储到SharePreferenced当中。
4.调用Editor的commit()方法,把存储的数据内容或者修改的内容提交。
:mit();登录的实例:(重重点)protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);userEt = (EditText)findViewById(erEt);passEt = (EditText)findViewById(R.id.passEt);chkSave = (CheckBox)findViewById(R.id.chkSaveUser);pref = getSharedPreferences("name_pref", MODE_PRIVATE);editor = pref.edit();String name = pref.getString("name", null);//获取数据if (name == null) {chkSave.setChecked(false);}else{userEt.setText(name);chkSave.setChecked(true);}}public void loginClick(View v){String name = userEt.getText().toString();String pass = passEt.getText().toString();if ("admin".equals(name)&&"123456".equals(pass)) {if (chkSave.isChecked()) {editor.putString("name", name);mit();}else{editor.remove("name");mit();}Toast.makeText(MainActivity.this, "登录成功", 0).show();}else{Toast.makeText(MainActivity.this, "登录失败", 0).show();【file存储】内部存储好处:当手机应用被卸载删除的时候,不会有过多的存于垃圾,都会被一起清理掉。
常用方法:1.FileOutputStream Context.openFileOutput (String filename, int mode)Context.MODE_APPENDContext.MODE_PRIVATEContext.MODE_WORLD_READABLEContext.MODE_WORLD_WRITEABLE2.FileInputStream Context.openFileInput (String filename)3.String[] Context.fileList()4.Context.deleteFile(String filename)文件存储的步骤:1.通过调用openFileOutPut()的方法实例化一个文件的输出流。
2.通过调用fileOutputStream的write方法,把byte型数据存储到文件中。
3.关闭流扩展存储(SD卡存储)获取sdcard状态: int Environment.getExternalStorageState()Environment.MEDIA_MOUNTED 介质已加载完Environment.MEDIA_MOUNTED_READ_ONLY 介质已加载完,但是只读状态Environment.MEDIA_CHECKING 正在检测介质Environment.MEDIA_UNKNOWN 介质未知Environment.MEDIA_UNMOUNTED 介质已卸载获取公共目录:File Environment.getExternalStoragePublicDirectory(String type)Environment.DIRECTORY_MOVIESEnvironment.DIRECTORY_MUSICEnvironment.DIRECTORY_DOCUMENTSEnvironment.DIRECTORY_DOWNLOADSEnvironment.DIRECTORY_PICTURESEnvironment.DIRECTORY_RINGTONES获取根目录:File Environment.getExternalStorageDirectory()获取下载缓存目录:File Environment.getDownloadCacheDirectory()读写SD卡的步骤1.判断手机内是否挂载了sd卡,判断是否获得了sd卡的读写使用权限Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTE D))//判断sdcard是否挂载,同时获得了权限File sdcardFile = Environment.getExternalStorageDirectory();2.在清单文件中加入2个权限<!-- 可以读写sd卡的内容 --><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!-- 在sd卡中创建删除文件的权限 --><uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>3.通过Environment.getExternalStorageDirectory()获取手机外置存储卡的地址。
4.然后就可以用FileInputStream,FileOutputStream等等来读写sd卡的文件了【Sqlite数据存储】SQLite简介:是安卓系统集成的轻量级的数据库,使用c语言编写的嵌入式数据库引擎。
无数据库管理引擎,独立DB文件存在的sqlite3工具1. sqlite3是Android SDK自带的命令式数据库管理工具,其所在路径: android_sdk/tools/2. sqlite expert 是可视化的数据库管理工具,最新版本是3.5.38官方下载路径:/download.html商业版:sqlite expert professional 有30天试用期个人版:sqlite expert personal 免费使用3. 破解版下载路径:SQLite Expert Professional(SQLite管理工具) v3.5.21.2440免费版/softview/softview_105940.html>sqlite3 db_name :启动数据库工具sqlite>.helpsqlite>.databasessqlite> .tablessqlite> .schema table_namesqlite>标准sql语句sqlite> .read c:/aa.sql 导入sql语句sqlite> .exit底层特点:1.虽然SQLite的引擎非常小,但她支持存储2TB大小的数据库文件2.以单个文件的形式存在3.是以B—Tree的数据结构存在于磁盘中。