Android数据存储

来源:互联网 发布:ios防骚扰软件 编辑:程序博客网 时间:2024/06/07 14:25

Android数据存储主要有几种方式,Sqlite数据库,xml文件存储,Json文件存储,图片视频文件存储,对象序列化存储。下面介绍这几种存储方式,在介绍这几种存储方式之前先介绍下Java中IO类。下面的存储方式部分通过Java中的IO类做到。

Java中的IO类

分为两种流,字符流和字节流。字符流用Reader,字节流用Stream。

  • 字节流

    字节流分为InputStream输入流,OutputStream输出流。它们都是抽象类,是其他字节流的基类。常用的如FileInputStream和FileOutputStream,文件输入输出流,ByteArrayInputStream和ByteArrayOutputStream字节数组输入输出流。它们被用来读取写入二进制文件和二进制数据。ObjectOutPutStream和ObjectInputStream是对象序列化和反序列化时用的流。可以将对象转换为二进制数据,再从二进制数据转换过来。

  • 字符流

    字符流分为Reader和Writer,它们也是抽象类,是其他字符流的基类。常用的如FileReader和FileWriter,InputStreamReader和OutputStreamWriter。FileReader和FileWriter是InputStreamReader和OutputStreamWriter的包装,两者不同之处在于当出现中文乱码问题时,可以使用InputStreamReader或OutputStreamWriter构造函数指定编码字符集UTF-8来避免乱码。他们被用来读取写入字符类型数据。

  • 带缓冲的流

    以Buffered开头的流都是自带缓冲的流。效率比上面所有的流都高。高的原因在于它节省IO的次数,正常来说,上面的流一次IO读取一个字节,而带缓冲的流一次读取默认8k的字节。一次IO操作,读取1个字节和8k字节时间相差不大,而一次IO的来回操作却要耗费大量时间。所以它比上面的流快。常用的如BufferedInputStream,BufferedReader等。他们还提供了读一行写一行的功能,不必自己再实现。

Android存储方式

  • Sqllite数据存储

    通过SqlliteOpenHelper这个类来创建数据库和表,得到数据库实例对象,再通过数据库实例对象 来进行增删改查操作。Sqlite数据库默认在私有目录下,若要换成SD卡目录,可以通过提供一个SD卡的上下文来构建SqliteOpenHelper。根据这个上下文来构建数据库。


  • Xml

    xml文件存储一般用来存储配置信息。Android SDk提供了自带的SharedPrefrence来写xml文件,在私有目录下。若在SD卡中写xml文件,需要借助xmlpullparser和xmlserializer来解析和序列化xml文件。


  • Json

    Json格式的文件比Xml格式的更常用,网络请求数据一般都是Json格式。Json解析可以用JsonObject和JsonArray来写。Json序列化可以用JsonWriter来实现。JsonReader也可以解析Json。最好的方式是使用Gson。Gson写起来方便。只需要建立对应Json格式的类。


  • 其他格式存储(如图片和视频)

    图片视频存储利用文件输入流来完成。通过FileInputStream将图片视频存储为二进制文件,文件名可以用MD5加密,路径值保存到Xml文件中。


  • 对象序列化

    将数据类序列化成二进制文件。Android中有两种方式,一种是实现Serializeable接口,这种是Java对象序列化的方式,另一种是实现Parcelable接口,这种是Android中提供的对象序列化方式,更加高效,但是更加复杂。建议是当序列化到本地用Serializeable接口,序列化传输到网络用Parcelable接口。


具体的存储方式实现代码见其他几篇文章。

原创粉丝点击