在Android开发过程中,难免会遇到需要文件操作,这些文件可以存放在data分区下面,也可以存放在外置sd,这些路径都是什么呢,今天在这里做一个简单的总结。
我一共用了8个系统API,代码如下:
tv.setText("getExternalCacheDir().getAbsolutePath():"+getExternalCacheDir().getAbsolutePath()+"\n" +"getDataDir().getAbsolutePath():"+getDataDir().getAbsolutePath()+"\n" +"getFilesDir().getAbsolutePath():"+getFilesDir().getAbsolutePath()+"\n" +"getCacheDir().getAbsolutePath()"+getCacheDir().getAbsolutePath()+"\n" +"Environment.getDataDirectory():"+Environment.getDataDirectory().getAbsolutePath()+"\n" +"Environment.getDownloadCacheDirectory():"+Environment.getDownloadCacheDirectory().getAbsolutePath()+"\n" +"Environment.getExternalStorageDirectory()"+Environment.getExternalStorageDirectory().getAbsolutePath()+"\n" +"Environment.getRootDirectory()"+Environment.getRootDirectory().getAbsolutePath()+"\n");运行结果如下:
附加问题:为什么很多Android应用要把文件写到/sdcard目录下而不是写到/data/data/目录下?
解答:
SD卡上也有一个文件夹 /Android/data/包名,这个文件夹也是用来给程序放应用数据的,此文件夹读写在4.4及以后不需要外置储存区读写权限。这两个文件夹区别在于 data 分区有权限控制,除非应用自己同意,否则其他应用无法读取内部的数据,而sdcard/Android下的文件只要有外置空间读取权限就可以读取。所以data下一般放私密信息,而sdcard/Android 下放可以公开的缓存数据。