Android数据存储
来源:互联网 发布:csgo残局 知乎 编辑:程序博客网 时间:2024/04/26 22:42
数据存储
分类
对应程序开发人员来讲,共分为五大存储:
1. SharedPreferences
2. 内部存储
3. 外部存储
4. SQLite数据库
5. 网络存储
SharedPreferences
SharedPreferences意为共享偏好,使使用键值对的方式来存储数据的。也就是说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的数据取出来。
存入数据
- 调用getSharedPreferences()方法得到SharedPreferences对象,然后调用edit()方法来获取一个SharedPreferences.Editor对象。
- 向SharedPreferences.Editor对象中添加数据,比如添加一个字符串,调用putString()方法。
- 调用commit()方法,提交添加的数据,完成存入数据的操作
SharedPreferences preferences=getSharedPreferences("preferences_test", MODE_PRIVATE); SharedPreferences.Editor editor=preferences.edit(); editor.putString("inputMsg","你好!"); editor.commit();//提交数据
注意:数据将存入/data/data/包名称/shared-prefs/目录下,生成preferences_test.xml文件!
读取数据
同样的得到SharedPreferences对象,然后调用getString()方法即可得到存入的数据。
SharedPreferences preferences=getSharedPreferences("preferences_test",MODE_PRIVATE); String text=preferences.getString("inputMsg", "我是默认值");
内部存储
①Cintext类提供了一个openFileOutput()方法,可以将数据存储到指定的文件中。这个方法传入两个参数,第一个参数是文件名,在文件创建时使用的名称。第二个参数是文件的操作的模式,有两种模式可选,MODE_PRIVATE是默认的操作模式,表示当指定同样文件名的时候,所写入内容覆盖原内容。MODE_APPEND表示如果文件已存在就往文件中追加内容。
存入数据
PrintWriter pw=new PrintWriter(new OutputStreamWriter(openFileOutput("HelloFiles",MODE_PRIVATE)));pw.write("你好,文件!");
注意:数据将存入/data/data/包名称/files目录下。
读取数据
BufferedReader br=new BufferedReader(new InputStreamReader(openFileInput("HelloFiles")));String line=br.readLine();while (line!=null){ Log.d("readfiles",line); line=br.readLine();}
②如果想往cache中写入或读取数据,则调用getCacheDir()方法,得到路径,创建File对象。
存入数据
File file =new File(getCacheDir(),"HelloCache.txt");if(!file.exists()){ try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); }}try { PrintWriter pw=new PrintWriter(new OutputStreamWriter(new FileOutputStream(file))); pw.print("你好,cache!"); pw.flush(); pw.close();} catch (FileNotFoundException e) { e.printStackTrace();}
注意:数据将存入/data/data/包名称/cache目录下。
读取数据
File file =new File(getCacheDir(),"HelloCache.txt");try { BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(file))); String line=br.readLine(); while (line!=null){ Log.d("readcache",line); line=br.readLine(); }} catch (FileNotFoundException e) { e.printStackTrace();} catch (IOException e) { e.printStackTrace();}
外部存储
外部存储是手机的SDcard中写入或读取数据的,这就需要声明权限
在manifest.xml文件中声明所要的权限:
<uses-permission android:name="ANDROID.PERMISSION.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission> <uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"></uses-permission>
然后调用Environment.getExternalStorageDirectory()方法得到路径,创建File对象。
存入数据
File file=new File(Environment.getExternalStorageDirectory(),"HelloSDcard.txt");try { PrintWriter pw=new PrintWriter(new OutputStreamWriter(new FileOutputStream(file))); pw.print("你好,SDcard"); pw.flush(); pw.close();} catch (FileNotFoundException e) { e.printStackTrace();}
注意:数据将存储在/mnt/sdcard/目录下。
剩余的两大存储,我们在下一篇博客中再总结!
- Android | Android数据存储
- Android数据存储--网络存储
- Android数据存储:File存储
- Android 数据存储--文件存储
- android 数据存储-文件存储
- Android数据存储----File 存储
- Android的数据存储
- Android数据存储
- Android数据存储
- Android 数据存储
- Android数据存储
- Android数据存储
- android中的数据存储
- Android 数据存储总结
- Android-数据存储
- Android 数据存储
- android数据存储
- Android 数据存储方式
- SQLite Android数据库详解
- 黑马程序员--动态类型检测
- Servlet的异常处理机制
- 【五校联考2015 9.5】送你一棵线段树
- 搭建go开发环境时,出现GoSublime error: MarGo build failed的问题
- Android数据存储
- Android 之数据存储--SharedPreferences
- Java 创建对象有哪几种方式
- 高效程序员的狂暴之路
- 架构设计:系统间通信(1)——概述从“聊天”开始上篇
- github-july-回文判断
- Hashmap实现原理
- keil 5.16a使用
- 图的遍历(PTA题目解答)