Android常见文件夹
外部存储、内部存储
Internal storage:
- 总是可用的,文件默认被当前app访问(非root)。
- 当用户卸载app的时候,系统会把internal内该app相关的文件都清除干净。
- 存储隐私信息,比如账号信息(非root)
External storage:
- 6.0以上需要获取Storage权限。
- 并不总是可用的,因为用户有时会通过USB存储模式挂载外部存储器,当取下挂载的这部分 后,就无法对其进行访问了。
- 保存在这里的文件可以被其他程序访问。
- 保存用户卸载app后不需要删除或者下次安装可以继续访问的文件
常见的获取文件路径方法,对应的绝对路径
Internal storage
1. getCacheDir().getAbsolutePath(): /data/data/packagename/cache 2. getFilesDir().getAbsolutePath(): /data/data/packagename/files
External storage
1. getExternalCacheDir().getAbsolutePath(): /storage/emulated/0/Android/data/packagename/cache 2. Environment.getExternalStorageDirectory().getAbsolutePath(): /storage/emulated/0 3. Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath()): /storage/emulated/0/DCIM 4. getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath: /storage/emulated/0/Android/data/packagename/files/Pictures
Java获取相对路径
String path = "/var/data/x/xyz.txt";
String base = "/var/data";
String relative = new File(base).toURI().relativize(new
File(path).toURI()).getPath();// relative == "x/xyz.dat"