Android数据存储

来源:互联网 发布:csgo残局 知乎 编辑:程序博客网 时间:2024/04/26 22:42

数据存储

分类

对应程序开发人员来讲,共分为五大存储:
1. SharedPreferences
2. 内部存储
3. 外部存储
4. SQLite数据库
5. 网络存储

SharedPreferences

SharedPreferences意为共享偏好,使使用键值对的方式来存储数据的。也就是说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的数据取出来。

存入数据

  1. 调用getSharedPreferences()方法得到SharedPreferences对象,然后调用edit()方法来获取一个SharedPreferences.Editor对象。
  2. 向SharedPreferences.Editor对象中添加数据,比如添加一个字符串,调用putString()方法。
  3. 调用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/目录下

剩余的两大存储,我们在下一篇博客中再总结!

1 0
原创粉丝点击