Android五种常用数据的存储方式

Android 常用数据的存储方式有五种:
0:SharePreference   Android 中SharedPreference存储
1:文件存储   

Android 存储中的内部存储和外部存储


2:数据库存储
3:contentProvider存储
4:网络存储 Android 中HttpURLConnection 的使用
















参考:+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1: 一个非常常用的,记住密码和本地登陆。
SharedPreference,文件存储,SDCard
配置信息。
所以一般是新版本的时候用到,还有就是用户名保存


SharedPreferences sp = getSharedPreferences("app-config",MODE_PRIVATE);
editor = sp.edit();
editor.putString("userName","admin");
editor.commit();

注意这里获取的时候用的是sp,而不是editor
String userName = sp.getString("userName",null);


+++++++++++++++++++++++++++++++++++++++++++++++
注意比较两个字符串的时候使用equals方法而不是==。
+++++++++++++++++++++++++++++++++++++++++++++++


存储在
:/data/data/com.zqxue.SharePreferenceDemo/shared_prefs


文件格式就是hashmap的格式。
打开一个SharedPreferences ,然后参数一它实际上就是配置文件的名称,
系统自动添加一个.xml到文件名之后。
参数二:就是这个文件的访问模式,通常都是私有的。其他程序不允许查看,类似于qq的密码保存。


还可以putInt类型的,有点像单例的感觉。只支持基本的数据结构,连char 都没有。int string float long boolean String[]




2:
主目录下面的sdcard和mnt下面的sdcard
都是/storage/emulated/lengacy


存储卡存储目录:
/mnt/scard
/storage/sdcard
/storeage/emulate/0/ 手机没有虚拟卡,系统给虚拟出来的。
手机外部存储,需要指定写存储卡的权限才可以进行文件的创建,删除,修改。





3: files 中的
File cacheDir = getCacheDir();
File filesDir = getFilesDir();
File imagesDir = context.getDir("app_images", MODE_PRIVATE);


11-30 20:55:06.704    5958-5958/? D/151130MY﹕ /data/data/com.zqxue.MyInternalStorage/cache
11-30 20:55:06.704    5958-5958/? D/151130MY﹕ /data/data/com.zqxue.MyInternalStorage/files
11-30 20:55:06.704    5958-5958/? D/151130MY﹕ /data/data/com.zqxue.MyInternalStorage/app_app_images


  // 第三个获取(如果不存在,那么创建) 一个文件夹,这个文件夹名称会拼接一个 app_
        // 例如 images  ->  "app_images"
        File imagesDir = context.getDir("app_images", MODE_PRIVATE);
        Log.d("ISA", "internal custom dir = " + imagesDir.getAbsolutePath());




向files文件夹中的文件些东西:
   FileOutputStream fos = openFileOutput("notes.txt",MODE_PRIVATE);
            String time = String.valueOf(System.currentTimeMillis());
            fos.write(time.getBytes());
            fos.close();
从files文件夹中的文件读东西:
   FileInputStream fis = openFileInput("notes.txt");
            byte[] get = readStream(fis);//readStream 是一个自己定义的方法
            String ss = new String(get,"utf-8");
            Log.d("151130MY",ss);
            fis.close();


???为什么我通过sp 去设置了配置文件但是通过openFileInput读的时候读不到呢?


因为目录不同 ,sp的是在shared_prefer 里面而,openFileInput是在files 里面





4: // 获取主要的外部存储设备的状态; 可能返回 是否可用
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
File sdcard = Environment.getExternalStorageDirectory();
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
注意权限:


String state = Environment.getExternalStorageState();
if(Environment.MEDIA_MOUNTED.equals(state)){
            // MEDIA_MOUNTED 代表存储卡可用, MOUNTED 称作 "挂载"
 // 获取外部存储中,应用程序共享的目录, 返回内容可能不存在
File musicDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC); // 获取音乐文件夹
            











5: 这个和内部是一样的,我认为是因为权限的问题。Environment应该是访问不了哪个文件夹的把?
File cacheDir = context.getExternalCacheDir();
File filesDir = context.getExternalFilesDir(null);
filesDir = context.getExternalFilesDir("images");


// 获取外部私有的目录,也需要检测存储卡是否存在
        String state = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(state)) {




注意:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1: SharedPreference 的路径是share_prefer
    而openFileInput openFileOutput 都是在files 目录下面
2:.getExternalStoragePublicDirectory(); 括号里面是一些常量,例如Environment.DIRECTORY_MUSIC


3:


   


4:
            // 外部私有目录 /storage/emulated/0/Android/data/com.qianfeng.sharedpreferencesdemo/cache
            // 内部私有目录 /data                      /data/com.qianfeng.sharedpreferencesdemo/cache


5: // 外部私有 files 目录
            File filesDir = context.getExternalFilesDir(null);


            // 获取外部私有 files 目录中的子目录
            filesDir = context.getExternalFilesDir("images");


你可能感兴趣的:(5,Android,高级UI开发技术)