APP的缓存文件放在哪里?

只要是需要进行联网获取数据的APP,都会在本地产生缓存文件。那么,这些缓存文件到底放在什地方合适呢?系统有没有给我们提供建议的缓存位置呢?不同的缓存位置有什么不同呢?

考虑到卸载APP必须删除缓存

在Android手机里面,缓存的位置分为两类,一类是Internal Storage,另外一类是External Storage,

Internal Storage(内部存储)

   你的app的internal storage 目录是以你的app的包名作为标识存放在Android文件系统的特定目录下[data/data/com.example.xx]

  若是你没有设置为可读或者可写,其他app是没有办法读写的。因此只要你使用MODE_PRIVATE ,那么这些文件就不可能被其他app所访问

  内部存储在你的APP卸载的时候,会一块被删除

  我们可以在cache目录里面放置我们的图片缓存,而且cache与files的差别在于,如果手机的内部存储控件不够了,会自行选择cache目录进行删除,因此,不要把重  要的文件放在cache文件里面

  1. File file1 = new File(getFilesDir(), "getFilesDir.txt");  
  2.         Log.d("TAG", "file1=" + file1.getAbsolutePath());  
  3.   
  4.         try {  
  5.             OutputStream outputStream1 = new FileOutputStream(file1);  
  6.             outputStream1.write("file".getBytes());  
  7.             outputStream1.close();  
  8.         } catch (Exception e) {  
  9.             e.printStackTrace();  
  10.         } 

  运行结果

    1. 02-03 07:18:04.068  22237-22237/? D/TAG﹕ file1=/data/data/com.socks.baidudemo/files/getFilesDir.txt

 

  

  1. File file2 = new File(getCacheDir()"cache.txt");  
  2.         Log.d("TAG", "file2=" + file2.getAbsolutePath());  
  3.         try {  
  4.             OutputStream outputStream1 = new FileOutputStream(file2);  
  5.             outputStream1.write("cache".getBytes());  
  6.             outputStream1.close();  
  7.         } catch (Exception e) {  
  8.             e.printStackTrace();  
  9.         } 

    运行结果

      02-03 07:19:31.508  23652-23652/? D/TAG﹕ file2=/data/data/com.socks.baidudemo/cache/cache.txt 

  以下是运行后的效果

 

Internal Storage(外部存储)

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

  1.首先要检查状态

  1. /* Checks if external storage is available for read and write */  
  2. public boolean isExternalStorageWritable() {  
  3.     String state = Environment.getExternalStorageState();  
  4.     if (Environment.MEDIA_MOUNTED.equals(state)) {  
  5.         return true;  
  6.     }  
  7.     return false;  
  8. }  
  9.   
  10. /* Checks if external storage is available to at least read */  
  11. public boolean isExternalStorageReadable() {  
  12.     String state = Environment.getExternalStorageState();  
  13.     if (Environment.MEDIA_MOUNTED.equals(state) ||  
  14.         Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {  
  15.         return true;  
  16.     }  
  17.     return false;  

  2.外部私有存储

 

  1. File file3 = new File(getExternalCacheDir().getAbsolutePath(), "getExternalCacheDir.txt");  
  2.         try {  
  3.             OutputStream outputStream1 = new FileOutputStream(file3);  
  4.             outputStream1.write("getExternalCacheDir".getBytes());  
  5.             outputStream1.close();  
  6.         } catch (Exception e) {  
  7.             e.printStackTrace();  
  8.         }  
  9.   
  10.         Log.d("TAG", "file3=" + file3);  
  11.   
  12.         File file4 = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "getExternalFilesDir.txt");  
  13.         try {  
  14.             OutputStream outputStream1 = new FileOutputStream(file4);  
  15.             outputStream1.write("getExternalFilesDir".getBytes());  
  16.             outputStream1.close();  
  17.         } catch (Exception e) {  
  18.             e.printStackTrace();  
  19.         } 

效果图

 

 

  

   3外部公共存储

  APP产生的文件不需要隐藏,即对用户是可见的,那么你可以把文件放在外部的公共存储文件下面

 

  1. Environment.getExternalStorageDirectory()   
  2. Environment.getExternalStoragePublicDirectory() 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue开发移动端App时,可以使用一些工具和组件来进行适配和开发。首先,在main.js中引入`vue-awesome-mui`并使用`Vue.use(Mui)`来引入MUI组件库。注意,MUI只能在手机上使用,所以在浏览器运行时可能无法看到效果。\[1\] 为了适配移动端设备的屏幕大小和比例差异,可以使用`flexible.js`进行适配。在main.js中引入`flexible.js`文件,并将其作为静态文件放在最外层的static文件夹中引入。这样可以实现移动端项目的适配。\[2\] 在开发移动端App时,可以使用一些常见的组件和标签,如`router-link`用于导航跳转,`keep-alive`用于缓存不活动的组件实例,以提高性能。此外,还可以使用一些UI组件库,如`mint-ui`和`vant-ui`来快速构建界面。\[2\] 除此之外,还可以使用Axios进行网络请求的封装,使用iconfont图标库,连接真机进行调试,打包APK并发布应用。在开发过程中,可以不断学习并更新项目,逐步完善项目结构和功能。\[3\] 总结来说,开发Vue移动端App需要引入相应的组件库和工具,进行适配和开发,并不断学习和更新项目。 #### 引用[.reference_title] - *1* *2* *3* [vue开发移动端app-学习记录](https://blog.csdn.net/weixin_44736005/article/details/113406120)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值