Android 数据存储5种方式

目录
SharedPreference存储
内部存储数据
外部存储数据
数据库SQlite数据存储
网络存储

对于开发者来说Android的数据存储方式主要有五种:

  • SharedPreference存储
  • 内部存储数据
  • 外部存储数据
  • 数据库SQlite数据存储
  • 网络存储


第一种 使用SharedPreference数据存储

SharedPreference对象本身只能获取数据而不支持数据的存储和修改,存储修改是通过Editor对象来实现的

实现SharedPreference数据存储的步骤如下:
1 通过getPreference()方法得到SharedPreference的对象
2 通过edit方法来获得Editor的对象
3 利用Editor对象来实现数据的存储
4 通过commit()方法来提交
代码实现

//写操作
SharedPreferences preferences=getPreferences(MODE_PRIVATE);
        SharedPreferences.Editor editor=preferences.edit();
        editor.putString("edit_input",mEditTxetWrite.getText().toString());
        editor.commit();
//读操作
 SharedPreferences preferences=getPreferences(MODE_PRIVATE);
        String content=preferences.getString("edit_input","我是默认值");
        mTextViewRead.setText(content);


第二种 内部存储数据

1 所谓的内部存储与外部存储,是指是否是手机内置。手机内置的存储空间,称为内部存储,Android的内部存储空间对于应用程序来说,就是“/data/data”目录。

2 使用内部存储主要有二个方式,一个是文件操作,一个是文件夹操作。
无论哪种方式,都提供了openFileInput()openFileOutput()方法来读取设备上的文件。。
代码示例:

// 文件的写操作(在file文件夹下的缓存数据)
try {
            FileOutputStream outputStream=openFileOutput("key",MODE_PRIVATE);
            PrintWriter printWriter=new PrintWriter(new OutputStreamWriter(outputStream));
            printWriter.write("你好,世界");
            printWriter.flush();
            printWriter.close();
            outputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

//  文件的读操作
try {
            FileInputStream inputStream=openFileInput("key");
            BufferedReader br=new BufferedReader(new InputStreamReader(inputStream));
            String line=br.readLine();
            while (line!=null){
                Log.d("TGA", ""+line);
                line=br.readLine();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
// 写入到cache文件夹下的缓存数据
File file=new File(getCacheDir(),"hello.txt");
        if (!file.exists()){
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        try {
            FileOutputStream outputStream=new FileOutputStream(file);
            PrintWriter printWriter=new PrintWriter(new OutputStreamWriter(outputStream));
            printWriter.write("你好,Android");
            printWriter.flush();
            printWriter.close();
            outputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
// 读取cache文件夹下的数据
try {
            FileInputStream inputStream=openFileInput("hello.txt");
            BufferedReader br=new BufferedReader(new InputStreamReader(inputStream));
            String line=br.readLine();
            while (line!=null){
                Log.d("TGA", "" + line);
                line=br.readLine();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


第三种 外部存储数据存储

1 Android外部存储空间,与内部存储空间相对,外部存储空间是指手机出厂的时候不存在,用户在使用时候可以自由添加的外部存储介质,例如TS卡、SD卡等。
2 也是对文件进行操作。
代码示例:

File file=new File(Environment.getExternalStorageDirectory(),"hellosdcard.txt");
//Environment.getExternalStorageDirectory()指得到路径
                if (!file.exists()){
                    try {
                        file.createNewFile();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                try {
                    FileOutputStream outputStream=new FileOutputStream(file);
                    PrintWriter printWriter=new PrintWriter(new OutputStreamWriter(outputStream));
                    printWriter.write("你好本地存储");
                    printWriter.flush();
                    printWriter.close();
                    outputStream.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }


第四种 数据库存储SQLite

  • 1 SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。

  • 数据库存储在 data/< 项目文件夹 >/databases/ 下。 Android 开发中使用 SQLite 数据库
    Activites 可以通过 Content Provider 或者 Service 访问一个数据库。

  • Android 提供了 SQLiteOpenHelper 帮助你创建一个数据库,你只要继承 SQLiteOpenHelper类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。

SQLiteOpenHelper 的子类,至少需要实现三个方法:

1 构造函数,调用父类 SQLiteOpenHelper 的构造函数。这个方法需要四个参数:上下文环境(例如,一个 Activity),数据库名字,一个可选的游标工厂(通常是 Null),一个代表你正在使用的数据库模型版本的整数。

2 onCreate()方法,它需要一个 SQLiteDatabase 对象作为参数,根据需要对这个对象填充表和初始化数据。

3 onUpgrage() 方法,它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,这样你就可以清楚如何把一个数据库从旧的模型转变到新的模型。


第五种 网络存储
在这不作介绍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值