getExternalStorageDirectory()和getExternalFilesDir()的区别

App专属文件:app专属文件就是那些只有该app才可以使用的文件,这类文件随app的删除而删除,他们可以被存储两个地方:internal storage和external storage;internal storage就是手机上自带很小的一块区域,所以要正确实用;external storage就是SD卡,SD卡可能被卸下,所以SD卡不是任何时间都可以,因此我们必须降一些重要的数据文件以及一些配置文件放在internal storage中。将一些大的图片或文件放到external storage中。

存储在internal storage:这是你app私有的目录,你的shared preference文件数据库文件都在这里。目录为"data/data/<package name>/file/.."   访问方法为: File fdir=gerFilesDir();

存储在external storage:这类文件存在在"mnt/sdacard/Android/data/<package name>/file/.."目录下。随app的删除而删除。

获取这个路径的方法:File eFile=getExternalFilesDir(null);

添加文件权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

getExternalFilesDir(null)参数传入的为null,这样默认访问的是files文件夹,可以指定子文件夹。

有些时候我们的手机没有安装SD卡,所以我们使用前需要判断一下:

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {//SD卡已装入}

App独立文件:app独立文件就是那些不依赖某些特定app的文件,这类文件当我们删除应用之后,还应该保留在手机上的。

访问方式:

(1)File sdCard=Environment.getExternalStorageDirectory();这个路径为sd卡的根路径mnt/sdcard

(2)File directory_pictures = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

推荐阅读更多精彩内容