zoukankan      html  css  js  c++  java
  • 谈谈android缓存文件

    ##内部存储

    • 总是可用的
    • 这里的文件默认是只能被你的app所访问的。
    • 当用户卸载你的app的时候,系统会把internal里面的相关文件都清除干净。
    • Internal是在你想确保不被用户与其他app所访问的最佳存储区域。

    ##外部存储

    • 并不总是可用的,因为用户可以选择把这部分作为USB存储模式,这样就不可以访问了。
    • 是大家都可以访问的,因此保存到这里的文件是失去访问控制权限的。
    • 当用户卸载你的app时,系统仅仅会删除external根目录(getExternalFilesDir())下的相关文件。
    • External是在你不需要严格的访问权限并且你希望这些文件能够被其他app所共享或者是允许用户通过电脑访问时的最佳存储区域。

    ###内部存储API对应位置

    • getFileDir() 通过此方法可以获取到你的APP内部存储的文件,路径为/data/data/pacgage_name/files
    • getCacheDir() 通过此方法可以获取到你的APP内部存储的文件,路径为/data/data/package_name/cache
    • openFileOutput() 通过此方法,我们可以获取到一个输出流,输出流的保存路径是/data/data/package_name/files ,和getFileDir()的路径一致

    ###外部存储

    ####外部私有存储

    • Context.getExternalCacheDir()
    • Context.getExternalFilesDir()

    创建的私有文件的地址是/sdcard/Android/date/package_name下面,Android文件夹是隐藏文件夹,用户无法操作。

    如果我们想缓存图片等比较耗空间的文件,推荐放在getExternalCacheDir()所在的文件下面,这个文件和getCacheDir()很像,都可以放缓存文件,在APP被卸载的时候,都会被系统删除,而且缓存的内容对其他APP是相对私有的。

    ####外部公共存储

    你的APP产生的文件不需要隐藏,即对用户是可见的,那么你可以把文件放在外部的公共存储文件下面。这个方法不是Context的方法,而是Environment的两个方法,第一个方法获取到的其实是外部存储的根目录,而第二个方法获取到得则是外部存储的公共目录。其实在访问权限上是没有区别的,不同点是getExternalStoragePublicDirectory()在运行的时候,会需要你带有一个特定的参数来指定这些public的文件类型,以便于与其他public文件进行分类。

    • Environment.getExternalStorageDirectory()
    • Environment.getExternalStoragePublicDirectory()
  • 相关阅读:
    Java实现 LeetCode 697 数组的度(类似于数组的map)
    Java实现 LeetCode 697 数组的度(类似于数组的map)
    Java实现 LeetCode 697 数组的度(类似于数组的map)
    Java实现 LeetCode 696 计数二进制子串(暴力)
    Java实现 LeetCode 696 计数二进制子串(暴力)
    Java实现 LeetCode 696 计数二进制子串(暴力)
    Java实现 LeetCode 695 岛屿的最大面积(DFS)
    Java实现 LeetCode 695 岛屿的最大面积(DFS)
    PHP serialize() 函数
    PHP print_r() 函数
  • 原文地址:https://www.cnblogs.com/krislight1105/p/10133237.html
Copyright © 2011-2022 走看看