Android 文件路径

来源:互联网 发布:阿里云服务器被攻击怎么办 编辑:程序博客网 时间:2024/06/04 20:10

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卡的根目录下也存在此文件。