android文件存储可以分为:

一、getCacheDir()

二、getFilesDir()

三、getExternalFilesDir()

四、getExternalCacheDir()

Android系统分为

1、内部存储:内部存储是手机系统自带的存储空间有限,

2、外部存储:外部存储一般是SD卡的存储,空间一般都比较大,但不一定可用或者剩余空间可能不足。

一般我们存储内容都会放在外部存储空间里。使用注意:

1、先判断SD卡是否可用,可用时优先使用SD卡的存储,

2、不可用时用内部存储,存储在SD卡上时,可以在SD卡上新建任意一个目录存放,

3、也可以存放在应用程序内部文件夹,区别是在SD卡的任意目录存放时内容不会随应用程序的卸载而消失,而在应用程序内部的内容会随应用程序卸载消失。

一般缓存文件放在应用程序内部,用户主动保存的文件放在SD卡上的文件夹里。如果在SD卡上任意新建目录存放所有数据,用户卸载时会残存大量文件,招致用户反感。

存储路径:

一般我们可以通过 Context 和 Environment 相关的方法获取文件存取的路径。

1、内部存储

1.1、 根目录($rootDir):/data,通过 Environment.getDataDirectory() 获取。

1.2、 应用程序目录($applicationDir):$rootDir/data/包名(不一定,不同设备可能不同)

应用缓存目录:$applicationDir/cache,通过Context.getCacheDir()获取。

应用文件目录:$applicationDir/files,通过Context.getFilesDir()获取。Context.getFileStreamPath(String name)返回以name为文件名的子文件目录,若name为空,则返回文件根目录。假设我们的应用程序包名为com.learn.test,路径如下:

Environment.getDataDirectory():      /data

Context.getCacheDir(): /data/data/com.lod.test/cache

Context.getFilesDir(): /data/data/com.lod.test/files

Context.getFileStreamPath(""): /data/data/com.learn.lod/files

Context.getFileStreamPath("test"): /data/data/com.learn.lod/files/test

2、外部存储:

2.1、 根目录(rootDir):/storage/emulated/0(不一定,不同设备可能不同),通过 Environment.getExternalStorageDirectory() 获取。

2.2 、

a、应用程序目录(applicationDir):$rootDir/Andorid/data/包名

b、应用缓存目录:applicationDir/cache,通过Context.getExternalCacheDir()获取。

c、应用文件目录:applicationDir/files,  通过Context.getExternalFilesDir(String type),type为空字符串时获取。type系统给我们提供了很多常用的类型,比如图片和下载等等:

public static String DIRECTORY_MUSIC = "Music";

public static String DIRECTORY_ALARMS = "Alarms";

public static String DIRECTORY_NOTIFICATIONS = "Notifications";

public static String DIRECTORY_PICTURES = "Pictures";

public static String DIRECTORY_MOVIES = "Movies";

public static String DIRECTORY_DOWNLOADS = "Download";

public static String DIRECTORY_DCIM = "DCIM";

public static String DIRECTORY_DOCUMENTS = "Documents";

假设我们的应用程序包名为com.lod.test,路径如下:

Environment.getExternalStorageDirectory():            /storage/emulated/0

Context.getExternalCacheDir(): /storage/emulated/0/Android/data/com.lod.test/cache

Context.getExternalFilesDir(""): /storage/emulated/0/Android/data/com.lod.test/files

Context.getExternalFilesDir("test"): /storage/emulated/0/Android/data/com.lod.test/files/test

Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES): /storage/emulated/0/Android/data/com.lod.test/files/Pictures

2.3 公共存储目录: 我们可以在外部存储上新建任意文件夹,不过在6.0及之后的系统需要动态申请权限,这些目录的内容不会随着应用的卸载而消失。如:

Environment.getExternalStorageDirectory():                        /storage/emulated/0

Environment.getExternalStoragePublicDirectory(""): /storage/emulated/0

Environment.getExternalStoragePublicDirectory("test"): /storage/emulated/0/test

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES): /storage/emulated/0/Pictures

                                                                        -END