你的位置:首页 > 软件开发 > 操作系统 > Android系统的五种数据存储形式(一)

Android系统的五种数据存储形式(一)

发布时间:2016-10-15 00:00:04
Android系统有五种数据存储形式,分别是文件存储、SP存储、数据库存储、contentprovider 内容提供者、网络存储。其中,前四个是本地存储。存储的类型包括简单文本、窗口状态存储、音频视频数据、XML注册文件的各种数据。各种存储形式的特点不尽相同,因此对于不同的数据类 ...

Android系统的五种数据存储形式(一)

      Android系统有五种数据存储形式,分别是文件存储、SP存储、数据库存储、contentprovider 内容提供者、网络存储。其中,前四个是本地存储。存储的类型包括简单文本、窗口状态存储、音频视频数据、XML注册文件的各种数据。各种存储形式的特点不尽相同,因此对于不同的数据类型有着固定的存储形式,本文为演示方便给出的案例基本相同,都是是采用账号登录来演示数据存储,保存账号和密码信息,下次登录时记住账号和密码。重在说明各种存储形式的原理。

    文件存储:

    以I/O流的形式把数据存入手机内存或SD卡,可以存储大数据,如音乐、图片或视频等。对于手机内存来说系统会根据每个应用的包名创建一个/data/data/包名/的文件夹,访问自己包名下的目录是不需要权限的,并且 Android 已经提供了非常简便的 API 可以直接去访问该文件夹。访问时可以用getFilesDir()和getCacheDir(),两个的区别是系统会自动清理后者中的内容。

    SD卡中的文件通常位于mnt/sdcard目录下,不同生产商生产的手机这个路径可能不同。操作sd卡的时通常要判断下sd卡是否可用以及剩余空间是否足够,因为部分手机的SD卡可卸载,SD卡处于非挂载状态时,无法进行读写操作。另外一点,对SD卡的读取和写入操作均需要相应的权限,否则无法完成。获取SD卡路径的方法是Environment.getExternalStorageDirectory(),其余操作与文件存储基本类似。

   文件存储位置:

                Android系统的五种数据存储形式(一)

 

     SD卡存储路径:

                Android系统的五种数据存储形式(一)

      数据存储在手机内存的实现方法:

package com.example.qqload;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.InputStreamReader;import com.example.qqload_sp.R;import android.os.Bundle;import android.app.Activity;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.text.TextUtils;import android.view.Menu;import android.view.TextureView;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {  private EditText et_qq;  private EditText et_password;  private CheckBox cb_remenber;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    et_qq = (EditText) findViewById(R.id.et_qq);    et_password = (EditText) findViewById(R.id.et_password);    cb_remenber = (CheckBox) findViewById(R.id.cb_remenber);    File file = new File(getFilesDir(), "info.txt");//    File file = new File(getCacheDir(), "info.txt");  缓存中存放数据    if (file.exists() && file.length() > 0) {      try {        FileInputStream fis = new FileInputStream(file);        BufferedReader br = new BufferedReader(new InputStreamReader(            fis));        String line = br.readLine();        String qq = line.split("##")[0];        String password = line.split("##")[1];        et_qq.setText(qq);        et_password.setText(password);        fis.close();      } catch (Exception e) {        // TODO Auto-generated catch block        e.printStackTrace();      }    }  }  public void login(View view) {    String qq = et_qq.getText().toString().trim();    String password = et_password.getText().toString().trim();    if (TextUtils.isEmpty(qq) || TextUtils.isEmpty(password)) {      Toast.makeText(this, "密码或者用户名不能为空", 0).show();      return;    }    if (cb_remenber.isChecked()) {      File file = new File(getFilesDir(), "info.txt");      try {        FileOutputStream fos = new FileOutputStream(file);        fos.write((qq + "##" + password).getBytes());        fos.close();        Toast.makeText(MainActivity.this, "保存成功", 0).show();      } catch (Exception e) {        Toast.makeText(MainActivity.this, "保存失败", 0).show();        e.printStackTrace();      }    }  }}

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:Android系统的五种数据存储形式(一)

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录