文件,文件夹的使用和权限

Android下有哪些文件目录

在Android系统中,根据调用的系统API接口,有3种目录可以给我们写入文件:

  • 1. 应用 私有存储(内置存储)
    • 获取方式:
      • Context.getFileDir() :获取内置存储下的文件目录,可以用来保存不能公开给其他应用的一些敏感数据如用户个人信息
      • Context.getCacheDir() :获取内置存储下的缓存目录,可以用来保存一些缓存文件如图片,当内置存储的空间不足时将系统自动被清除(然而具体多大,清除时的策略我也没查到。。)
    • 绝对路径:
      • Context.getFileDir() : /data/data/应用包名/files/
      • Context.getCacheDir() : /data/data/应用包名/cache/
    • 写权限:不需要申请

    这是手机的内置存储,没有root的过的手机是无法用文件管理器之类的工具查看的。而且这些数据也会随着用户卸载App而被一起删除。这两个目录其实就对应着 设置->应用->你的App->存储空间 下面的 清除数据 和 清楚缓存 ,如下图所示。

  • 2. 应用

    扩展存储(SD卡)

    • 获取方式:
      • Context.getExternalFilesDir(null) : 获取SD卡上的文件目录
      • Context.getExternalCacheDir() : 获取SD卡上的缓存目录
    • 绝对路径:
      • Context.getExternalFilesDir(null) : SDCard/Android/data/应用包名/files/
      • Context.getExternalCacheDir() : SDCard/Android/data/应用包名/cache/
    • 写权限:
      • API < 19:需要申请
      • API >= 19:不需要申请

    既然是SD卡上的目录,那么是可以被其他的应用读取到的,所以这个目录下,不应该存放用户的敏感信息。同上面一样的,这里的文件会随着App卸载而被删除,也可以由用户手动在设置界面里面清除。

  • 3.公共存储(SD卡)

    • 获取方式: Environment.getExternalStorageDirectory()
    • 绝对路径: SDCard/你设置的文件夹名字/
    • 写权限:需要申请

    如果我们的App需要存储一些公共的文件,甚至希望下载下来的文件即使在我们的App被删除之后,还可以被其他App使用,那么就可以使用这个目录。这个目录是始终需要申请SD写入权限的。

 

文件以及文件夹使用注意点

文件夹使用中需要创建,文件使用也需要创建

File filePath= new File(savaPath);
if (!filePath.exists()) {
    filePath.mkdirs();  创建文件夹
}


File file = new File(savaPath + fileName);
if (!file.exists()) {
    file.createNewFile();   创建文件
}
发布了77 篇原创文章 · 获赞 3 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/haiyang497661292/article/details/88306449
今日推荐