Android存储文件路径的区别

一、Android存储简介

Android系统分为内部存储和外部存储

从Android6.0开始不断在更新存储(读写)权限,除了在AndroidManifest.xml文件里声明,app运行时也要动态申请使用对应的权限

提醒:应用私有存储不需要动态申请权限

  1. Context.getFileDir();获取内置存储下的文件目录,可以用来保存不能公开给其他应用的一些敏感数据如用户个人信息。
    路径为:/data/data/应用包名/files/
  2. Context.getCacheDir();获取内置存储下的缓存目录,可以用来保存一些缓存文件如图片,当内置存储的空间不足时将系统自动被清除。
    路径为: /data/data/应用包名/cache/

外部存储路径的开头:storage/emulated/0
内部存储文件路径的开头:/data/user/0/应用的包名(packageName)
在设备上对应的目录为/data/date/应用的包名(packageName)
在这里插入图片描述
在这里插入图片描述

系统的公共存储文件夹
在这里插入图片描述

二、存储文件路径

在这里插入图片描述
在这里插入图片描述

TestActivity.kt代码

package example.demo.kotlinimport android.os.Bundle
import android.os.Environment
import androidx.appcompat.app.AppCompatActivity
import example.demo.kotlin.utils.LogUtil/**************************************************************************Author: chinadragon*Time: 2020/1/19 9:24************************************************************************/
class TestActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.actvity_test)//getExternalStorageDirectory在安卓10中已弃用, 可以使用getExternalFilesDir 代替val externalStorageDirectory = Environment.getExternalStorageDirectory()val filesDir = this.filesDirval cacheDir = this.cacheDirval externalCacheDir = this.externalCacheDirval externalCacheFilesDirPictures = this.getExternalFilesDir(Environment.DIRECTORY_PICTURES)LogUtil.i("activity 获取缓存文件路径 filesDir : ${filesDir.absolutePath}")LogUtil.i("activity 获取缓存文件路径 cacheDir : ${cacheDir.absolutePath}")externalCacheDir?.let {LogUtil.i("activity 获取缓存文件路径 externalCacheDir : ${it.absolutePath}")}externalCacheFilesDirPictures?.let {LogUtil.i("activity 获取缓存文件路径 externalCacheFilesDirPictures : ${it.absolutePath}")}/*activity 获取缓存文件路径 filesDir : /data/user/0/example.demo.kotlin/filesactivity 获取缓存文件路径 cacheDir : /data/user/0/example.demo.kotlin/cacheactivity 获取缓存文件路径 externalCacheDir : /storage/emulated/0/Android/data/example.demo.kotlin/cacheactivity 获取缓存文件路径 externalCacheFilesDirPictures : /storage/emulated/0/Android/data/example.demo.kotlin/files/Pictures*/val mFilesDir2 = this.application.filesDirval cacheDir2 = this.application.cacheDirval externalCacheDir2 = this.application.externalCacheDirval externalCacheFilesDirPictures2 = this.application.getExternalFilesDir(Environment.DIRECTORY_PICTURES)LogUtil.i("activity.getApplication() 获取缓存文件路径 filesDir2 : ${mFilesDir2.absolutePath}")LogUtil.i("activity.getApplication() 获取缓存文件路径 cacheDir2: ${cacheDir2.absolutePath}")externalCacheDir2?.let {LogUtil.i("activity.getApplication() 获取缓存文件路径 externalCacheDir2 : ${it.absolutePath}")}externalCacheFilesDirPictures2?.let {LogUtil.i("activity.getApplication() 获取缓存文件路径 externalCacheFilesDirPictures2: ${it.absolutePath}")}/*activity.getApplication() 获取缓存文件路径 filesDir2 : /data/user/0/example.demo.kotlin/filesactivity.getApplication() 获取缓存文件路径 cacheDir2: /data/user/0/example.demo.kotlin/cacheactivity.getApplication() 获取缓存文件路径 externalCacheDir2 : /storage/emulated/0/Android/data/example.demo.kotlin/cacheactivity.getApplication() 获取缓存文件路径 externalCacheFilesDirPictures2: /storage/emulated/0/Android/data/example.demo.kotlin/files/Pictures*/val filesDir3 = this.applicationContext.filesDirval cacheDir3 = this.applicationContext.cacheDirval externalCacheDir3 = this.applicationContext.externalCacheDirval externalCacheFilesDirPictures3 = this.applicationContext.getExternalFilesDir(Environment.DIRECTORY_PICTURES)LogUtil.i("activity.getApplicationContext() 获取缓存文件路径 filesDir3 : ${filesDir3.absolutePath}")LogUtil.i("activity.getApplicationContext() 获取缓存文件路径 cacheDir3 : ${cacheDir3.absolutePath}")externalCacheDir3?.let {LogUtil.i("activity.getApplicationContext() 获取缓存文件路径 externalCacheDir3 : ${it.absolutePath}")}externalCacheFilesDirPictures3?.let {LogUtil.i("activity.getApplicationContext() 获取缓存文件路径 externalCacheFilesDirPictures3 : ${it.absolutePath}")}/*activity.getApplicationContext() 获取缓存文件路径 filesDir3 : /data/user/0/example.demo.kotlin/filesactivity.getApplicationContext() 获取缓存文件路径 cacheDir3 : /data/user/0/example.demo.kotlin/cacheactivity.getApplicationContext() 获取缓存文件路径 externalCacheDir3 : /storage/emulated/0/Android/data/example.demo.kotlin/cacheactivity.getApplicationContext() 获取缓存文件路径 externalCacheFilesDirPictures3 : /storage/emulated/0/Android/data/example.demo.kotlin/files/Pictures*/}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/703120.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型相关内容的研究学习

大模型研究学习 1.大模型的“幻觉” 幻觉可以分为事实性幻觉和忠实性幻觉。 事实性幻觉,是指模型生成的内容与可验证的现实世界事实不一致。 比如问模型“第一个在月球上行走的人是谁?”,模型回复“Charles Lindbergh在1951年月球先驱任务…

抖音剪辑音乐配乐音效合集,短视频制作分类配乐库素材

一、素材描述 这是一套短视频剪辑配乐库,包含大气震撼、儿童幽默、片头片尾、科技未来、惊险悬念、婚礼婚庆、各种各样、轻松明朗、民族风格、叙事抒情等配乐分类,基本上是应有尽有了。本套配乐库素材,大小18.18G,5个分卷压缩文件…

Chromium 调试指南2024 Windows11篇-条件断点、函数断点(十一)

1. 前言 在调试过程中,步进代码和条件断点/函数断点是非常有用的工具和技术,它们可以帮助开发者更加精确地定位和解决问题。本文将介绍步进代码的常用工具以及条件断点/函数断点的设置方法,帮助开发者更加高效地进行调试工作。 2. 步进代码…

一例Phorpiex僵尸网络变种的分析

概述 这是一例Phorpiex僵尸网络变种,通过NSIS打包,加载恶意dll(Flaminius.dll),读取dat文件(Preoral.dat),在内存解密并解压缩出一个Pe,创建同名傀儡进程并注入。通过可移动存储介质传播&#…

单链表题-ysf-反转-中间节点-回文-合并-分割

环形链表的约瑟夫问题_牛客题霸_牛客网 经典的约瑟夫环 #include <stdint.h> #include <stdlib.h> //创建链表 typedef struct ListNode ListNode;ListNode* buyNode(int x){ListNode* newNode(ListNode*)malloc(sizeof(ListNode));if(newNodeNULL){exit(1);}newN…

【Linux取经路】进程通信之匿名管道

文章目录 一、进程间通信介绍1.1 进程间通信是什么&#xff1f;1.2 进程间通信的目的1.3 进程通信该如何实现 二、管道2.1 匿名管道2.1.1 站在文件描述符角度深入理解管道2.1.2 接口使用2.1.3 PIPE_BUFFER 和 Pipe capacity2.1.4 管道中的四种情况2.1.5 管道特征总结 2.2 匿名管…

ORACLE ODAX9-2的一个误告警Affects: /SYS/MB的分析处理

在运维的多套ORACLE ODAX9-2版本&#xff0c;都遇到了一个计算节点的告警&#xff1a;Description: The service Processor poweron selftest has deteced a problem. Probabity;:100, UulD:cd1ebbdf-f099-61de-ca44-ef646defe034, Resource:/SYS/MB,&#xff1b;此告警从描述上…

优雅草便民工具v2.0.3更新

优雅草便民工具v2.0.3更新 2024年5月13日v2.0.3更新优雅草便民工具youyacao-tools-界面大改版增强用户体验 apk下载 https://fenfacun.youyacao.com/tools203.apk 介绍 优雅草便民工具是一款由成都市一颗优雅草科技有限公司打造的便民查询公益工具&#xff0c;2024年1月17…

202009青少年软件编程(Python)等级考试试卷(三级)B卷

第 1 题 【单选题】 关于利用CSV模块对文件进行操作,下列描述不正确的是&#xff1f; A :CSV是一种常用的文本格式,使用逗号分隔值的 B :CSV模块是Python的内置模块,包含很多函数,可以非常方便地读取和写入数据 C :由于CSV模块是Python的内置模块,所以可直接使用,无需引入 …

【全开源】国际版JAVA同城服务美容美发到店服务上门服务系统源码支持Android+IOS+H5

国际版同城服务美容美发到店与上门服务系统&#xff1a;一站式打造美丽新体验 随着人们生活水平的提高和审美观念的升级&#xff0c;美容美发服务已成为人们日常生活中不可或缺的一部分。为了满足全球消费者的多样化需求&#xff0c;我们推出了“国际版同城服务美容美发到店与…

力扣98.验证二叉搜索树

法一&#xff08;自己思路&#xff0c;复杂了&#xff09;&#xff1a; from collections import dequeclass Solution(object):def isValidBST(self, root):""":type root: TreeNode:rtype: bool"""queue deque()if root.left!None:queue.app…

男士内裤什么牌子的好?五大质量出众男士内裤汇总

许多男性朋友在挑选男士内裤时&#xff0c;常常因市场上琳琅满目的品牌和多样化的材质而感到困惑&#xff0c;不知从何下手。然而&#xff0c;选择男士内裤并非一件小事&#xff0c;它关乎着舒适感、透气性以及抗菌效果等多方面的体验。因此&#xff0c;在选购男士内裤时&#…