Android ⽂件系统 API

一、app独立文件

不会因为app删除而消失的,有特定目录这些目录都是以DIRECTORY开头的,例如:DIRECTORY_MUSIC , DIRECTORY_PICTURES。

使用方法(1)更加灵活,可以自己指定目录。

File sdCard = Environment.getExternalStorageDirectory();
File directory_pictures = new File(sdCard, "Pictures");
Log.i(TAG,"directory_pictures="+directory_pictures);

使用方法(2)更加方便的访问Android给我们提供好的一些公共目录的方法

File directory_pictures = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
Log.e(TAG, "directory_pictures="+directory_pictures);

结果会是:sdcard/Pictures

二、app专属文件

会随着app卸载而被删除

可以被存储在两个地方:internal storage 和 external storage 。 internal storage就是手机自带的一块存储区域,通常很小;external storage就是通常所说的SD卡,通常很大。

存储在internal storage

存储你的shared preference文件,数据库文件

File filesDir = getFilesDir(); Log.i(TAG,"file_dir="+filesDir);

结果会是:/data/data/< package name >/files/

存储在external storage(需要文件读写权限)

File externalFilesDir = getExternalFilesDir(null);//默认访问的是files文件夹 Log.i(TAG, "externalFileDir = "+externalFilesDir);

结果会是:sdcard/Android/data/< package name >/files/

File externalFilesDir = getExternalFilesDir("Caches"); Log.i(TAG, "externalFileDir = "+externalFilesDir);

结果会是:sdcard/Android/data/< package name >/files/Caches

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

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

三、获取目录的api详解

getCacheDir: 获取/data/data/包名/cache目录(会随着卸载被删除)

getFilesDir:获取/data/data/包名/files目录(会随着卸载被删除)

getExternalFilesDir:获取SDCard/Android/data/包名/files/ 目录,一般放一些长时间保存的数据 (对应设置里面的清除数据)

getExternalCacheDir:获取SDCard/android/data/包名/cache/目录,一般存放临时缓存数据(对应设置里面的清除缓存)

卸载后,SDCard/Android/data/包名/ 这个目录下的所有文件都会被删除

Environment.getDataDirectory() = /data

Environment.getDownloadCacheDirectory() = /cache

Environment.getExternalStorageDirectory() = /mnt/sdcard

Environment.getExternalStoragePublicDirectory(“test”) = /mnt/sdcard/test

Environment.getRootDirectory() = /system

getPackageCodePath() = /data/app/包名.apk

getPackageResourcePath() = /data/app//包名.apk

getCacheDir() = /data/data/包名/cache

getDatabasePath(“test”) = /data/data//包名/databases/test

getDir(“test”, Context.MODE_PRIVATE) = /data/data//包名/app_test

getExternalCacheDir() = /mnt/sdcard/Android/data/包名/cache

getExternalFilesDir(“test”) = /mnt/sdcard/Android/data//包名/files/test

getExternalFilesDir(null) = /mnt/sdcard/Android/data//包名/files

getFilesDir() = /data/data/包名/files

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值