Android中的五种存储方式和各自的特点

一:简介


内置硬盘:需要自己控制内置硬盘缓存文件

外置硬盘:手机共享的文件,例如照片

Shared preferences:以键值对的方式保存私有的数据,存储简单的键值对xml,可以存储boolen float int long

Database:保存有规模的私有数据库,推荐使用Room persistence library

除了硬盘的数据,其他的方式都是为了存储私有的数据,ContentProvider可以用来控制数据的权限.


二.具体内容

1.硬盘

:

:一直都是存在的,文件只能被当前的app获取,卸载APP的时候会删除

:不一定一直是存在的,共享读取的,如果使用getExternalFilesDir() 获取存储路径卸载APP的时候会顺带删除

的安装路径默认是内置硬盘,但是也可以指定到外置硬盘,通过在manifest 文件中指定Android:installLocation

 

:

app的包名决定的,而且保存在Android文 件系统中一个特定的位置.

获取app内置硬盘的一个路径

获取暂存文件路径,需要控制在不需要的时候删除给定的 文件,并且创建文件的时候一定要制定一个size限度.

,可以使用File()构造函数,新建一个file,指定路径和名称.

            File file = new File(this.getFilesDir(),filename);

openFileOutput()方法打开一个输出流,从app中输出文件到指定 的路径并规定文件名,这个方法自动输出到内置硬盘的app路径,这一点可 以从Context.java类以及中看出.返回的是当前Context的路径.

                

String fileName=”text.txt”;

                String fileContent=”Hello World!”;

                FileOutPutStream fos;

                try{

                    fos = openOutPut(fileName,Context.MODE_PRIVATE);

                    fos.write(fileContent.getBytes());

                    fos.close();

                }catch(Exception e){

                    e.printStrackTrace();

                }



7.0以上的版本中不存在Context.MODE_PRIVATE之外的 其他权限了.

android 本地储存省市区 安卓本地存储_Android

android 本地储存省市区 安卓本地存储_移动开发_02


:

createTempFile()创建

public void setTempFile(Context context, String uri){

            File file;

            try{

            String fileName = uri.parse(url).getLastPathSegment();

            file = 	File.createTempFile(filename,null,context.getCacheDir());

            }catch(Exception e){

            e.printStackTrace();

                }

            }



,存储空间不足时会自动删除临时文件.并 且在使用过后应当立即删除.

:

在APP安装的时候就可见的文件可以存放在 res/raw/当中.

都是在当前app的路径



    3).外置硬盘


            1. 请求权限

            2. 确认存储区域是可用的

以及更高不需要读写权限,以下的需要权限,需要在Manifest文件 中获取权限后加上最高sdk的属性

          

<user-permission android:name=”......”
             android:maxSdkVersion=”18”/>
:
            if(Environment.getExternalStorage().equals(Environment.MEDIA _MOUNTED);
:
getExternalStoragePublicDirectory(),这个方法需要指定保存文件 的类型.
 
            File file = new  File(Environment.getExternalStoragePublicDirectory(Environmen t.TYPE),fimeName);
”.name”,可以避免被找到.
:
           getExternalFilesDir()
            选择多重的存储位置
            API19 getExternalFilesDirs();
            ContextCompat.getExternalFilesDirs();
:
            getFreeSpace()/getTotalSpace().
:
            delete();