Android提供了两种获取文件路径的方式:
1、通过Environment获取,常用方法如下图所示:
image.png
这些方法都是静态方法。
通过Environment获取的文件路径都是公共的,是所有app都可以访问的,其中我们最常用的就是Environmen.getExternalStorageDirectory(),经常在这个目录下创建文件夹存放文件,这个路径,也就是一般进入系统提供的文件管理app呈现的第一级目录。在这个路径创建的目录和文件,是公共的,同时,除非手动删除,否则即使创建这个目录或文件的app卸载,也会还会存在,各类清理大师什么的,也不会去删除,所以装卸过很多app的话,这个路径下也会有很多的目录,还得一个一个手动删除。
2、通过Context获取,常用方法如下图所示:
image.png
查看上面实验结果,发现通过Context(注:这四个方法并不是静态方法,这里的Context是指具体的如Activity之类的Context子类)获取的路径都跟包名有关。事实上,通过Context获取的这四个路径下创建的目录文件都是app私有的,其他app是无法访问的。
getCacheDir()、getFilesDir()获取到的是系统内部存储,是被隐藏起来的,通过系统自带的文件管理app是看不到的,只有root后才能查看。
getCacheDir()获取的路径是缓存路径,系统清理垃圾缓存的时候,会清空这个路径下的所有文件,app的缓存文件可以放在这里。
getFilesDir(),则可以用来存放一些长久性的文件,但是清理应用数据的时候会清空这个路径下的内容
当app卸载时,以上两个路径也会被删除。
getExternalFilesDir()、getExternalCacheDir()获取的是外部存储。可以被用户查看。除了可以被用户查看这一点与前面两个方法获得的路径不一样外,似乎找不到有什么不同的,选择清除数据的时候,getExternalFilesDir()获取的路径目录也会被删掉,选择清楚缓存的时候,getExternalCacheDir()获取的路径目录也会被删掉。
最后,由于基于Android的深度定制系统版本总舵,不同版本获取的路径可能会有一两级目录名不同或者多一两级目录,但是基本的路径是差不多。
@谢谢