getDir("test", Context.MODE_PRIVATE);
(/data/data/com.xxx.xxx/app_test)
文件目录方式
getDir("test.txt", Context.MODE_PRIVATE);
(/data/data/com.xxx.xxx/app_test.txt)
文件方式
注意:其中“app_”是为调用时,系统自己加上的。
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中使用Context.MODE_APPEND
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入
getDatabasePath("test.db").getAbsolutePath();
(/data/data/com.xxx.xxx/databases/test.db)
getCacheDir().getAbsolutePath();
(内部缓存目录:/data/data/com.xxx.xxx/cache)
getFilesDir().getAbsolutePath();
(内部文件目录:/data/data/com.xxx.xxx/files)
getPackageCodePath(); 与 getPackageResourcePath();
(/data/app/com.xxx.xxx-2.apk)
getExternalCacheDir().getPath();
(/storage/sdcard0/Android/data/com.xxx.xxx/cache)
getExternalFilesDir(null).getPath();
(/storage/sdcard0/Android/data/com.xxx.xxx/files)
Environment.getDataDirectory().getPath();
(/data)
Environment.getDownloadCacheDirectory().getPath();
(/cache)
Environment.getExternalStoragePublicDirectory(Environment.XXX).getPath();
(Environment.DIRECTORY_DCIM:/storage/sdcard0/DCIM)
(Environment.DIRECTORY_MUSIC:/storage/sdcard0/Music)
(Environment.DIRECTORY_ALARMS:/storage/sdcard0/Alarms)
(Environment.DIRECTORY_DOWNLOADS:/storage/sdcard0/Download)
(Environment.DIRECTORY_MOVIES:/storage/sdcard0/Movies)
(Environment.DIRECTORY_NOTIFICATIONS:/storage/sdcard0/Notifications)
(Environment.DIRECTORY_PICTURES:/storage/sdcard0/Podcasts)
(Environment.DIRECTORY_RINGTONES:/storage/sdcard0/Ringtones)
Environment.getExternalStorageDirectory().getPath();
(/storage/sdcard0)
Environment.getRootDirectory().getPath();
(/system)
最好不要在SD卡根目录上建立文件夹或文件,如需使用外部目录存放数据,使用getExternalCacheDir()或getExternalFilesDir()作为目录
1.某些厂商部分机型(如:华为)即使在AndroidManifest.xml和代码里动态申请读写权限,也 不能直接在SD卡根目录上进行创建/删除 文件夹/文件。
2.避免造成用户SD卡上太多脏数据