[Android应用]Android开发基础之数据持久化存储
定义:数据持久化指的是存储数据,android里有提供多种方式;把数据存储到data目录涉及API获取Apk的数据存储路径:File filesDir = this.getFilesDir();Log.d(TAG, "filesdir: " + filesDir);///data/user/0/com.example.activitydemo/files获取Apk的缓存存储路径:File cach
·
定义:
数据持久化指的是存储数据,android里有提供多种方式;
把数据存储到data目录
涉及API
获取Apk的数据存储路径:
File filesDir = this.getFilesDir();
Log.d(TAG, "filesdir: " + filesDir);
///data/user/0/com.example.activitydemo/files
获取Apk的缓存存储路径:
File cacheDir = this.getCacheDir();
Log.d(TAG, "cacheDir: " + cacheDir);
///data/user/0/com.example.activitydemo/cache
把数据存储到SD卡目录
涉及API
获取SD卡挂载状态:
String sdState = Environment.getExternalStorageState();
Log.d(TAG, "sdState: " + sdState);
//获取SD卡挂载状态:sdState: mounted
获取SD卡挂载目录:
File externalStorageDirectory = Environment.getExternalStorageDirectory();
Log.d(TAG, "getSdPath: " + externalStorageDirectory);
//获取SD卡目录:getSdPath: /storage/emulated/0
获取SD卡剩余空间:
long freeSpace = externalStorageDirectory.getFreeSpace();
Log.d(TAG, "freeSpace: " + freeSpace + "bytes");
//freeSpace: 10999836672bytes
可视化数据:(传入一个bytes,输出一个便于观察的单位格式的数据)
String sizeText = Formatter.formatFileSize(this,freeSpace);
Log.d(TAG, "sizeText: " + sizeText + "GB");
//sizeText: 10.24 GB
存储数据:
其中FileOutputStream(File file, boolean append),append代表是否追加;
if (Environment.MEDIA_MOUNTED.equals(sdState)){
File externalStorageDirectory = Environment.getExternalStorageDirectory();
Log.d(TAG, "getSdPath: " + externalStorageDirectory);
//获取SD卡目录:getSdPath: /storage/emulated/0
try {
File file = new File(externalStorageDirectory,"info.text");
if (! file.exists()) {
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(file,true);
fos.write("存数据到SD卡中\n".getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
添加权限(否则会报错):
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
采用SharePreference保存偏好设置(比如Settings)
第一步:拿到这个SharePreference
mSharedPreferences = this.getSharedPreferences("switch_info",MODE_PRIVATE);
第二步:进入编辑模式
final SharedPreferences.Editor edit = mSharedPreferences.edit();
第三步:保存数据
edit.putBoolean("state",isChecked);
第四步:提交编辑器
edit.commit();
switcg_info.xml文件:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<boolean name="state" value="true" />
</map>
SharePreference存储也属于内部存储,在data/data/包名/shared_prefs,以xml文件保存一起来;内容保存都是以键值对的方式来进行保存;(Settings大部分都是以这个方式进行存储);
数据存储之数据库Sqlite
参考:
更多推荐
已为社区贡献1条内容
所有评论(0)