Android数据保存的方式

2017-12-25  本文已影响0人  JokerHerry

数据存储是我们在开发过程中肯定都会遇到的事情,不管是对文件的读写,还是对数据库的操作,都涉及到对数据的操作。这里,我们就来总结一下Android中,对数据保存的方式有哪些。

数据保存方式.png

从我的认知角度来说,要保存我们的数据,一共有4种方式:

file

file是最基本,也是最基本最通用的一种数据存储的方式,不过也是使用起来最为麻烦的一种方式。为什么要说麻烦呢?因为你只能通过读取文本的方式知道里面的东西,而且如果是储存的变量数据的话,你还要自己辨认这是什么类型变量,然后在转换为自己需要的变量,当然,你也可以通过序列化的方式,将其储存在一个对象中。
所以文件的储存方式常常被我们用来存储一写简单的,或者是二进制的数据。

写入
在Android,我们可以通过openFileOutput的方法,来将我们当前应用的文件进行操作。

常用方式:

        BufferedWriter writer = null;
        FileOutputStream data = null;
        try {
            data = openFileOutput("data", Context.MODE_PRIVATE);
            writer = new BufferedWriter(new OutputStreamWriter(data));
            writer.write("haozhiqiang!");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if (writer!=null    ){
                    writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

里面有一个疑问你肯定也已经发现了,我们并没有在里面写明我们文件储存的位置。噫!其实这是Android的一种便利的方式,因为文件最终都会储存在/data/data/包名/项目名/files/这个文件夹之下。
打开文件,我们就可以看见我们刚才所写的东西。

image.png
image.png

然后还有一个问题,openFileOutput的第二参数是什么意思?,这个其实就是我们的对文件写入的模式,有MODE_PRIVATE和MODE_APPEND,很好理解,private表示我们写文件的时候,从最开始的地方开始写,如果文件里面有东西的话,就直接覆盖掉。append呢,表示我们每次添加内容的时候,从文件的最下方,接着添加内容。嘛嘛,很容易理解。
这就是file的写入操作,很简单吧,我们在看看读取的操作。

读取
同样,使用Android给我们的提供的方法,不过这一次是用的是openFileInput。

常用方式:

        FileInputStream data = null ;
        BufferedReader bufferedReader = null;
        try {
            data = openFileInput("data");
            bufferedReader = new BufferedReader(new InputStreamReader(data));
            String s = bufferedReader.readLine();
            System.out.println(s);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if (bufferedReader!=null    ){
                    bufferedReader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

还是很容易理解对不对。这里也没有写文件路径,只是写了文件的名字,所以他也是直接在工程的/files文件夹之下进行查找文件。而且我们也没有写读取方式,因为只是读取并没有对文件进行操作本来就是安全的,所以也就没有特殊的读取模式。

总结:
1.file操作其实就是直接对文件进行操作,我们的可以通过Android给我们提供的openFileInput和openFileOutput方式直接存储在/files文件夹之下。
2.我们也可以直接使用java的方式,直接使用IO流进行操作,这时候 我就需要自己找到文件夹的位置。IO流的操作可以参考我之前的文章

sharedPreferences

sharedPrefrences是一种基于xml的方式,采用键值对的方式的储存,可以理解为一个可以储存在文件中的Map。所以我们在储存的时候,是按照规定的类型写进去,读取的时候,也是直接读出来的数据。但是使用方法超简单的好嘛,比file方式还简单。

使用
三步走:
1.获得sharedPreferencesEdit
2.进行写入或者是读取
3.关闭sharedPreferencesEdit

image.png

读取

**

上一篇下一篇

猜你喜欢

热点阅读