前言

Android文件目录可以分为内部存储和外部存储,其中外部存储又可以分为私有目录和公有目录。参考图片理解:

android 内部存储文件 安卓内部储存路径_android 内部存储文件

一、内部存储

内部存储不是我们常说的内存,内部存储是指每个APP应用内部私有的存储空间, 比如SharedPreference存储的数据、
Sqlite存储的数据、以及缓存数据等等都是放在内部存储空间里面。
特点:
1.应用私有,不能被其他程序访问。
2.随着应用的安装而创建,随着应用的卸载而删除。
3.默认不可见(你在文件管理中看不到它)

形如:

/data/app/
/data/data/应用包名/shared_prefs
/data/data/应用包名/cache
/data/data/应用包名/databases
/data/data/应用包名/files

一、外部存储

外部存储是指内部存储以外的存储空间,每个手机都有外部存储。外部存储又可以划分为公共目录和私有目录。
特点:
1.公开,所有应用都可以访问。
2.共有目录默认存在,私有目录需自行创建。
3.默认可见(你可以在文件管理找到他)

(1)公共目录

通常我们下载图片、视频、表格等就是下载到公共目录,就可以被其他应用扫描打开文件。

形如:

音乐:/storage/emulated/0/Music
闹钟:/storage/emulated/0/Alarms
播客:/storage/emulated/0/Podcasts
通知:/storage/emulated/0/Notifications
图片:/storage/emulated/0/Pictures
电影:/storage/emulated/0/Movies
下载:/storage/emulated/0/Download
媒体:/storage/emulated/0/DCIM
文档:/storage/emulated/0/Documents

代码实现:

//获取文件目录以及目录下的文件(以音乐为例,其他目录也是一样的获取方法)
//获取:公共目录——音乐目录
File files = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
//获取:音乐目录——所有文件
File [] fileList =files.listFiles();//获得第一层的所有文件
for(File file:fileList ){

}

(2)私有目录

私有目录默认情况下是不存在的,需要程序员自行创建,主要用于存放一些更程序运转有关的文件,也有一些APP会在私有目录中缓存一些文件(假缓存)。

形如:

/storage/emulated/0/Android/data/包名/files/子目录
/storage/emulated/0/Android/data/包名/cache

代码实现:

//获取:/storage/emulated/0/Android/data/包名/files/子目录
String path=mContext.getExternalFilesDir("子目录名称").getAbsolutePath();
File file=new File(path);

//获取:/storage/emulated/0/Android/data/包名/cache
String path2=mContext.getExternalCacheDir().getAbsolutePath();
File file2=new File(path2);

一个关于私有目录的小故事:

以前快手不支持上传超过15分钟的视频,但只要你去找到快手的私有目录,把里面的某个文件删除掉,就可以往快手上传超过15分钟的视频。
笔者亲测,确实可行,不过现在这个BUG已经不存在了。(只是为了放大家更加了解内部存储,并无恶意宣传,哈哈哈)