关于Android的一些存储

关于Android的一些存储

       一些设备把持久的存储空间划分为"internal" 和 "external"两个部分,所以即使设备没有可移除的存储,也会存在两个存储空间。并且无论外存储是否可移除,对于API的操作时是一样的。

一、internal(内存储)

1.路径:/data/data/your.package.name/*,一般结构如下图


2.总是可用的;
3.默认只有该app可以访问;
4.随app卸载而删除;

二、external(外存储)

1.关于/mnt/sdcard/、/sdcard/
        /mnt 目录,linux默认挂载外部设备都会挂到这个目录下面去,如将sd卡挂载上去后,会生成一个/mnt/sdcard 目录。
        /sdcard 目录是一个软链接,指向/mnt/sdcard 目录,即这个目录的内容就是sdcard的内容。
2.判断外存储是否可以卸载Environment.isExternalStorageRemovable();
3.不一定可用(用户可能把其挂载为USB存储设备或SD卡被移除,可使用Environment.getExternalStorageState()判断当前是否处于可用状态);
4.全局可读的,存在一定的安全隐患(可能被误删);
5.只有通过Context.getExternalCacheDir()保存的文件会随着app卸载而删除;
6.使用场景:
        公共文件:app被卸载之后,文件保持对其他App可用(Envoronment.getExternalStoragePublicDirectory(String type));
        私有文件:App在外存储的私有文件,由于尺寸较大不适合放在内存储 (Context.getExternalCacheDir());

三、Context路径(随app卸载而删除)

1、context.getFilesDir().getAbsolutePath();
返回路径:/data/data/your.package.name/files

 2、context.fileList();
 返回/data/data/your.package.name/files目录下的所有文件名(包含文件夹)

3、context.deleteFile(String name);
删除/data/data/your.package.name/files目录下某一个文件/文件夹

 4、context.openFileInput(String name) ;
返回 /data/data/your.package.name/files目录下的某一个文件(由参数name指定)的输入流(java.io.FileInputStream)

 5、context.openFileOutput(String name, int mode);

返回/data/data/your.package.name/files目录下的某一个文件(由参数name指定)的输出流对象(java.io.FileOutputStream)

6、context.getCacheDir().getAbsolutePath();
返回路径:/data/data/your.package.name/cache

7、context.getDir("abc", Context.MODE_PRIVATE).getAbsolutePath();    
返回路径:/data/data/your.package.name/app_abc
若没有该文件夹,自会自动创建(创建时会自动在abc前加上app_,原因不明)
    
8、 context.getExternalCacheDir().getAbsolutePath();

返回路径:/mnt/sdcard/Android/data/your.package.name/cache
没有就自动创建,需要android.permission.WRITE_EXTERNAL_STORAGE权限,不然返回空。
位于外置存储上,可用于保存较大的缓存文件        
        
9、context.getExternalFilesDir(String type).getAbsolutePath();
返回路径: /mnt/sdcard/Android/data/your.package.name/files/type
其中最后的type文件夹可由参数type指定,由android.os.Environment类中定义的常量,如下:
 android.os.Environment.DIRECTORY_MUSIC,
 android.os.Environment.DIRECTORY_PODCASTS,
 android.os.Environment.DIRECTORY_RINGTONES,
 android.os.Environment.DIRECTORY_ALARMS,
 android.os.Environment.DIRECTORY_NOTIFICATIONS,
 android.os.Environment.DIRECTORY_PICTURES, or
 android.os.Environment.DIRECTORY_MOVIES.
        
10、context.getObbDir().getAbsolutePath();
返回路径:/mnt/sdcard/Android/obb/your.package.name

四、Environment路径

1、Environment.getDataDirectory().getAbsolutePath();
 返回路径:/data

2、Environment.getDownloadCacheDirectory().getAbsolutePath();
 返回路径: /cache

3、Environment.getRootDirectory().getAbsolutePath();
 返回路径:/system

4、Environment.getExternalStorageDirectory().getAbsolutePath();
  返回路径:/mnt/sdcard

5、Environment.getExternalStoragePublicDirectory(String type).getAbsolutePath();

  返回路径:/mnt/sdcard/type
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值