目录结构:
android中的路径主要分为内部路径和外部路径。
一.内部路径
常见的内部存储路径有:
File f1=Environment.getDataDirectory(); // /data File f2=Environment.getDownloadCacheDirectory(); // /cache File f3=Environment.getRootDirectory(); // /system File f4= context.getCacheDir(); // /data/data/com.example.fileexiststest/cache File f5= context.getDatabasePath("abc.db"); // /data/data/com.example.fileexiststest/databases/abc.db File f6= context.getFilesDir(); // /data/data/com.example.fileexiststest/files File f7= context.getFileStreamPath("test2.txt"); // /data/data/com.example.fileexiststest/files/test2.txt
需要注意,内部存储的文件夹和文件只有在手机Root之后,才会看见,而且内部路径中的文件一般是只读的。
通过上面的观察可以看出,内部存储的公共缓存路径在/cache文件下,私有缓存路径在/data/data/包名/下,每个私有缓存路径下又有三个子目录,分别为cache,databases,files。cache路径是做缓存用的,databases路径是存储数据库文件的,平常使用的sqllite数据库就存放在这个目录中,files是存储其他文件的。
二.外部路径
常用的外部路径有:
File f1=Environment.getExternalStorageDirectory(); // /storage/emulated/0 File f2=Environment.getExternalStoragePublicDirectory("abc"); // /storage/emulated/0/abc File f3= this.getExternalCacheDir(); // /storage/emulated/0/Android/data/com.example.fileexiststest/cache File f4= this.getExternalFilesDir("test"); // /storage/emulated/0/Android/data/com.example.fileexiststest/files/test File f5= this.getObbDir(); // /storage/emulated/0/Android/obb/com.example.fileexiststest
在手机的内存中,可以找到/storage/emulated/0这个目录,但是里面并没有数据,但是查看这个目录的大小却发现有数据,这是因为数据被隐藏了的。
/storage/emulated/0的目录就是外部存储的目录。
在上面已经了解到,内存存储的文件是只读的,如果想要写入数据,那么就只好存到外部路径中了。
外部路径和内存路径的结构都差不多。还是分为共有路径和私有路径,共有路径下可以随意建文件和目录进行存储数据。私有目录的格式为 /android/data/包名/。公共路径的数据可以被所有程序访问,私有路径下的数据就只能被当前程序访问。