美文网首页
Android数据存储

Android数据存储

作者: 灼灼其华_b157 | 来源:发表于2018-09-13 00:47 被阅读0次

1.Android中提供哪些数据持久存储的方法?

1.File文件存储    2.sharedPreferences  3. SQLite数据库存储

2.Java中的I/O流读写怎么做?

当使用集合持有数据时,这些数据都存在于内存中,一旦程序运行结束,这些数据将会从内存中清除,下次再想使用这些数据,已经没有了。 如果希望将运算永久地保存下来,可以使用IO,将这些数据持久化存储起来。

一 JAVA语言中主要通过流来完成IO操作。

输入流:从程序外部传向程序的流。输入流只能从中读数据。

输出流: 从程序传到外部的流。输出流只能向其写入数据。

二 字节流

字节流是以字节为传输单位的数据读写形式,用于直接读取二进制数据,如图像和声音文件等。

InputStream和OutputStream分别为面向字节的输入流类的父类和输出流类的父类。InputStream和OutputStream都是抽象类。FileInputStream和FileOutputStream是文件流类,他们是InputStream和OutputStream的子类。FileInputStream类的一般用法是:先创建一个FileInputStream对象关联到要读取的文件,然后调用read方法读取字节数据到程序中,再进行其他处理。因为read方法是按字节的读入的,所以汉字被读入时会出现乱码。FileOutputStream类的一般用法是:先创建一个FileOutputStream对象关联到要写入的文件,然后调用write方法将字节数据写到程序中。如果进行写操作的文件不存在,则自动创建该文件,但是如果文件所在的路径也不存在,则运行时会报错。例如        

      FileOutputStream fos = new FileOutputStream("D:\\test.txt");是不会报错的,

      FileOutputStream fos = new FileOutputStream("D:\\tmp\\test.txt");如果之前在D盘中没有tmp这个文件夹,那么此时运行这条语句会报错。

三 字符流

Reader 和 Writer类是所有字符流的父类。一次读取或是写入两个字节,16位,即一个Unicode字符,因此可以使用字符流直接读写汉字内容。

BufferedReader 和 BufferedWriter类的用法示例

package 文件操作_字符流_BufferedReader和BufferedWriter;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

public class BufferedDemo {

    public static void main(String[] args) {

        try {

            FileReader fr = new FileReader("D:\\test.txt");

            BufferedReader br = new BufferedReader(fr);

            FileWriter fw = new FileWriter("D:\\test1.txt");

            BufferedWriter bw = new BufferedWriter(fw);

            String str = br.readLine();

            while (str != null) {

                bw.write(str);

                bw.newLine();

                str = br.readLine();

            }

            br.close();

            bw.close();

        } catch (FileNotFoundException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

四 缓存流 BufferedInputStream 和 BufferedOutputStream

使用缓存流可以提高大文件的读写效率。例如从文件读入数据时,每次从输入流中读取较大的数据量存入内存缓冲区,具体的读操作针对该缓冲区进行;执行缓冲输出时,每次将输出流中的数据写入到内存缓冲区,知道缓冲区写满,才将数据写入到最终的介质中。

使用缓存流的缺点:当计算机突然关闭时,可能会丢失数据。通过清空缓冲区的数据可以减少这种情况的发生,使用flush()方法即可。

3.SharePreferences适用情形?使用中需要注意什么?

SharedPreferences是一种轻型的数据存储方式,主要用于存储简单的配置信息,如int、string、boolean、float和long,他的本质是基于XML的key-value键值对数据

实现SharedPreferences存储的步骤如下:

(1)调用getSharedPreferences()方法获得SharedPreferences对象,提供两个参数,指定文件名和操作模式。

(2)调用SharedPreference对象的edit()方法获得SharedPreferences.Editor引用对象

(3)调用Edit接口的形如put某某某()方法以键值对形式保存某某某类型的数据

(4)调用Edit接口的commit()方法提交键值对。

一定注意,不用SharedPreferences对象去存储或修改数据,而是通过Editor对象。但获取数据时需要调用SharedPreferences对象的get某某某()方法了。

4.了解SQLite中的事务处理吗?是如何做的?

如果在执行SQL操作的时候,插入两条信息,这时就是一组事物,只有两个插入都完成,才会调用标记事务完成,而如果没有完成,在结束事务的时候发现db.setTransactionSuccessful();没有调用,就会回滚,将第一次插入操作放弃,还原为之前的情况,只有在事务顺利结束,才表示操作都执行完成了

5.如果现在要删除SQLite中表的一个字段如何做?

6.使用SQLite时会有哪些优化操作?

一  创建索引

索引有助于加快 SELECT 查询和 WHERE 子句,但它会减慢使用 UPDATE 和 INSERT 语句时的数据输入。索引可以创建或删除,但不会影响数据。

二  使用事务

原子性操作,要么全部成功,要么全部失败;在执行大量数据的插入操作时,避免频繁操作cursor,可以大幅减少insert操作时间,一般为1-2个量级

相关文章

  • Android ContentProvider(一)

    Android数据存储(一) Android数据存储(二) Android数据存储(三) Android数据存储(...

  • Android数据存储

    Android数据存储 Android提供了5种方式存储数据 SharedPreferences它是Android...

  • day07

    Android的存储方式 使用SharedPreferences存储数据 文件存储数据 SQLite数据库存储数据...

  • SharedPreferences存储数据

    Android的存储方式 使用SharedPreferences存储数据文件存储数据SQLite数据库存储数据使用...

  • 面试相关之 Android(二)

    数据存储 1. Android 中提供哪些数据持久存储的方法?参考回答:Android 平台实现数据存储的常见几种...

  • SharePreferences 分析及正确使用姿势

    1.Android 常见数据存储方式 在 Android 中,常用数据存储方式通常有以下几类: 文件存储:将数据存...

  • Android数据存储(三)

    前面两篇文章Android数据存储(一)和Android数据存储(二)分别使用文件存储、SharedPrefere...

  • SharedPreference与文件存储

    Android常用数据存储方式有SharedPreferences存储数据(虽然还是属于内部存储)、文件存储(内部...

  • Android中的数据存储

    1. Android中有哪些数据存储方式? Android中的数据存储主要有以下5种方式: File:文件存储,通...

  • 06 Room组件架构原理解析

    前言 Android应用数据存储简单来说有这么几种:文件存储、SharePreference存储、SQLite数据...

网友评论

      本文标题:Android数据存储

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