Android 文件路径

android 获取系统默认路径:
Environment.getDataDirectory().getPath() : /data 


Environment.getDownloadCacheDirectory().getPath() : /cache 


Environment.getExternalStorageDirectory().getPath(): /mnt/sdcard 


Environment.getRootDirectory().getPath() : /system 


Context.getCacheDir().getPath() : /data/data/com.ruizg/cache 


Context.getExternalCacheDir().getPath() :/mnt/sdcard/Android/data/com.ruizg/cache 


Context.getFilesDir().getPath() : /data/data/com.ruizg/files 


Context.getObbDir().getPath() : /mnt/sdcard/Android/obb/com.ruizg


Context.getPackageName() : com.ruizg


Context.getPackageCodePath() : /data/app/comruizg-1.apk 


Context.getPackageResourcePath() : /data/app/com.ruizg-1.apk

总的来说,一部含有sd卡的Android手机,分别有系统文件目录和sd卡文件目录。


不同的设备上,调用getExternalStorageDirectory()返回值却不一样。查询了Android的文档,才找到原因,原来这个方法返回的是当前设备厂商所认为的“外部存储”,
有可能返回外置的SD卡目录(Micro SD Card),也可能返回内置的存储目.

一部分手机将eMMC存储挂载到 /mnt/external_sd 、/mnt/sdcard2 等节点,而将外置的SD卡挂载到Environment.getExternalStorageDirectory()这个结点。
此时,调用Environment.getExternalStorageDirectory(),则返回外置的SD的路径。

另一部分手机直接将eMMC存储挂载在Environment.getExternalStorageDirectory()这个节点,而将真正的外置SD卡挂载到/mnt/external_sd、/mnt/sdcard2 等节点。
此时,调用Environment.getExternalStorageDirectory(),则返回内置的SD的路径。

至此就能解释为都是无外置SD卡的情况下,在中兴手机上,调用

打印Environment.getExternalStorageState(),却返回 ”removed“,在索尼、MOTO G上就返回:“mounted”

当手机中没有sd卡时,使用Environment.getExternalStorageDirectory()获取的是系统文件目录下面对应的/storge/sdcard0
因为这相对于没有SD卡的android系统,是一个外部的文件目录,而/data/data下就是内部的文件目录,在没有root权限的情况下,
内部文件目录下的文件是不可以被复制或修改的,而被看作是外部文件的系统目录则需要以下两个权限才可以对其操作 


<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />;
当有SD卡插入时,整个的系统目录被看作是一个内部文件目录,但是里面的一些目录也是可以
添加或修改的,当获取Environment.getExternalStorageDirectory()时,系统目录下有对应的目录,而sd卡默认就是在此路径之下,
所以当有sd卡的时,在该路径下插入某个文件,系统对应的目录有该文件,而在sd卡的根目录下也存在此文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值