美文网首页
Android数据保存的方式

Android数据保存的方式

作者: JokerHerry | 来源:发表于2017-12-25 19:08 被阅读0次

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

    数据保存方式.png

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

    • file 使用文件存储的方式
    • SD-file 在SD中进行文件操作(同上,属于文件操作)
    • SharePreference 一种XML键值对的方式储存
    • SQL数据库
    • ContentProvider 数据提供器

    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

    读取

    **

    相关文章

      网友评论

          本文标题:Android数据保存的方式

          本文链接:https://www.haomeiwen.com/subject/aeyibxtx.html