数据存储

1.SharedPreferences
存储位置:data/data/包名/shared-prefs
存储类型有限:基本数据类型+String+set<String>

写数据
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor
.putInt(getString(R.string.saved_high_score), newHighScore);
editor
.commit();
读数据
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);
2.文件存储
1.内部存储:
          存储位置:data/data/包名/files
          读取权限:自己不需要,他人的app必须在自己申明了可读可取的权限前提下才可进行读取
          存储文件
File file = new File(context.getFilesDir(), filename);
String filename = "myfile";
String string = "Hello world!";
FileOutputStream outputStream;

try {
  outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
  outputStream.write(string.getBytes());
  outputStream.close();
} catch (Exception e) {
  e.printStackTrace();
}
          缓存文件
public File getTempFile(Context context, String url) {
    File file;
    try {
        String fileName = Uri.parse(url).getLastPathSegment();
        file = File.createTempFile(fileName, null, context.getCacheDir());
    catch (IOException e) {
    }
    return file;
}
getCacheDir()区别于getFilesDir():前者可以被系统自动删除

2.外部存储:
          存储位置:mnt/sdcard
          必须先确保sd卡是否存在
/* 检查sd卡是否可读写*/
public boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();//得到sd卡状态
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}
         保存文件为公共:app卸载时文件不会被删掉
public File getAlbumStorageDir(String albumName) {
    File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), albumName);
    if (!file.mkdirs()) {
        Log.e(LOG_TAG, "Directory not created");
    }
    return file;
}

         保存文件为私有:app卸载时文件也会被删掉
public File getAlbumStorageDir(Context context, String albumName) {
    File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), albumName);
    if (!file.mkdirs()) {
        Log.e(LOG_TAG, "Directory not created");
    }
    return file;
}
3.SQLite数据库
自产自销:继承SQLiteOPenHelper进行封装
使用其他app数据:使用ContentProvide

你可能感兴趣的:(android,数据存储类型)