Android中的文件存储位置分析

Win11安卓子系统文件存储路径及更改方法详解 通过本文的介绍,我们了解了Win11安卓子系统的文件存储路径及其更改方法。这一功能不仅为用户提供了更大的存储灵活性,还有助于优化系统资源、避免磁盘空间不足等问题。希望本文能够帮助到需要更改安卓子系统存储路径的用户,让你的Windows 11系统更加高效、稳定地运行安卓应用。 阅读详情
应用开发过程中,避免不了需要使用到文件存储。Android在不同的系统版本中,对存储空间的使用限制会有所不同。如在6.0以上版本,对于外置存储空间的使用,需要动态申请权限,而6.0以下则不需要。不同的存储路径同样也会有区别。如内置存储空间无需权限申请可直接使用,而外置存储空间则可能会需要相应的权限。

在存储文件或缓存数据时,我们需要尽量做到以下几点:
(1).不要随意占用用户的内置存储。
(2).不要随意在SD卡上新建目录,应该放置自己应用包名对应的扩展存储目录下,这样卸载App时可以被自动清除。
(3).对占用的磁盘空间有上限,并按照一定的策略进行清除。

文件存储的位置

一般情况下,在Android系统中,有以下3种目录提供给开发者用来存储文件。

1.应用程序私有存储空间
该存储空间在内置存储中,无需申请权限即可使用。
context.getFilesDir();
描述:获取内置存储下的文件目录,可以用来保存不能公开给其他应用的一些敏感数据如用户个人信息。
路径:在6.0以下版本中为/data/data/<package_name>/files/,6.0以上版本中为/data/user/0/<package_name>/files。

context.getCacheDir();
描述:获取内置存储下的缓存目录,可以用来保存一些缓存文件如图片,当内置存储的空间不足时将被系统自动清除。
路径:在6.0以下版本中为/data/data/<package_name>/cache/,6.0以上版本中为/data/user/0/<package_name>/cache。

在开发中,尽量不要占用该存储空间,当检测到手机未安装SDCard时再考虑使用。由于是在手机内置存储中,如果手机未获取root权限,那么文件浏览器是无法访问的。当应用程序被卸载时,这里的数据会一起被删除。

2.应用程序扩展存储空间
该存储空间在外置存储中,当API<19(android4.4)时,需要申请权限;当API>=19时,无需申请权限。
context.getExternalFilesDir(String type);
描述:获取SDCard上的文件目录。参数type可为空,此时获取的是根目录。
路径:<sdcard_path>/Android/data/<package_name>/files/

context.getExternalCacheDir();
描述:获取SDCard上的缓存目录。
路径:<sdcard_path>/Android/data/<package_name>/cache/

如图所示:


由于SDCard可以被所有的应用程序读取到,所以在这里不要存放用户敏感数据。如果仅仅是简单的缓存任务,如图片的缓存,我们可以选择使用该路径。这里的文件同样会随着应用程序的卸载而被删除。

3.公共存储空间
该存储空间在外置存储中,必须要申请权限才能使用。
Environment.getExternalStorageDirectory();
描述:获取SDCard根目录。
路径: <sdcard_path>/

有时候我们需要存储一些公共文件,并且希望这些文件在应用程序被删除后依旧存在,如用户下载的视频、音乐等,可以使用该目录。


上述3种存储目录中,应用程序的私有存储空间和扩展存储空间(即1和2),可以由用户手动清除。在系统设置中,找到应用程序的存储管理,可以看到如下界面:


清除缓存:删除缓存数据,即getCacheDir()与getExternalCacheDir()。
清除数据:删除所有数据,即getFilesDir()、getCacheDir()、getExternalFilesDir(null)、getExternalCacheDir()。


存储权限的申请

在Android6.0之前的系统版本中,只要在清单文件中申请了下面两个权限,就可以在SDCard上进行文件的读写操作了。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

而在6.0之后的版本中,由于动态权限的引入,需要在使用时动态去申请。
private static final int REQUESTCODE_STORAGE = 1;

public void checkPermission() {
    int permission = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
    if (permission != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUESTCODE_STORAGE);
    } else {
        // your code
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    if (requestCode == REQUESTCODE_STORAGE) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // your code
        }
    }
}


123云盘文件存储位置修改指南 合理配置文件存储路径不仅能提升操作效率,更是数据安全管理的基石。通过本文介绍的路径修改四步法、进阶管理技巧和异常处理方案,用户可构建起高效安全的云存储管理体系。建议每季度进行一次路径健康检查,重点关注磁盘空间、权限配置和备份完整性,确保数字资产始终处于最佳存储状态。 阅读详情

相关推荐

Android的license分发器和客户端应用(已商用验证)

基于Android的应用license生成器和客户端应用和验证实例。 已经商用验证。 因为是从现有工程里剥离出来的,部分layout和图片资源未加入,请自行修改添加,其实仅参考框架即可。 不支持对时间和模块的license控制,后续会加入。

安卓4.4.2 无法下载保存到外置存储卡上(SD)

Android 4.4(代号 KitKat 奇巧),于北京时间2013年9月4日发布,Nexus 4、Nexus 7、Nexus 10以及原生版HTC One、Galaxy S4用户都是首批升级设备,到现在,大部分品牌的旗舰机都用上了4.4.2系统。如果有使用外置存储卡的用户,你会发现升级该系统后,你无法下载保存到外置存储卡上(SD)了,下面笔者分享下原因和解决方法。 在最新的And

u011279649的专栏 2921

当知识图谱遇见多模态:突破文本界限的智能认知革命

本文探讨了知识图谱与多模态技术的融合,揭示了其在医疗诊断、文化保护等领域的革命性应用。通过图神经网络、对比学习框架和跨模态注意力机制等技术,实现了文本、图像和音频数据的智能关联与认知。文章还分享了在Neo4j等图数据库中的实践案例和优化策略,为构建下一代智能认知系统提供了技术参考。

weixin_29197835的博客 461

安卓系统4.4 KK APP无法选择外置存储路径的的解决办法

为什么80%的码农都做不了架构师?>>> ...

weixin_34060741的博客 1360

react +ant desiagn pro实现按钮操作权限控制

在ant desiagn pro中提供了一个access用于对权限进行控制,需引入useAccess和Access

Sylvasylva的博客 2210

error C2039: “int_least8_t”: 不是“`global namespace'”的成员

在向H.265的测试软件HM16.0中配置boost的时候,发现 include &lt;boost/cstdint.hpp&gt;的时候总是会报错:错误 11 error C2039: “int_fast16_t”: 不是“`global namespace'”的成员 D:\Program Files\Caffe\VSContact\boost_1_58_0\boost\cstdint.hpp ...

flyerene的博客 1万+

android 5.0存储位置,安卓5.0及其以上打开外置卡存储权限的方法(很简单啊)

使用了4X之后,发现原来可以储存在外置卡上的功能貌似不能用了,比如设置某个壁纸软件存储路径时就会发生错误,同样还有音乐、文档之类的,都只能放在内置卡上,而4X的内置空间真的不大啊,而本人配置的外置卡难道就闲置吗?后来才发现,是android4.4的原因,从这个版本开始,对外置卡存储进行限制。后来偶然从别的地方找到了一个非常简单的方法,经本人试验,确实可以打开对外置卡的限制。这个方法非常简单,就往系...

weixin_30595763的博客 1190

Cesium+Vue3教程(003):基于Vue3的Cesium自定义地图和地图叠加

在 Cesium 中,是用于加载地表影像图层的核心接口。通过它,您可以将各种地图服务(如卫星影像、街道地图、自定义瓦片等)加载到 Cesium 的地球上。Cesium 提供了多个内置的。

WwLK123的博客 633

android 不支持存储卡,安卓手机SD卡不能用 原因及解决方法【详解】

安卓手机SD卡不能用怎么办?如果手机出现SD卡不可用,我们先把手机关闭,然后把SD卡拔出来,看看是不是SD移位,如果SD卡安装的位置有偏移的话也会导致sd卡不可用的。下面,我们就来看看安卓手机SD卡不能用的原因及解决方法。【安卓手机SD卡不能用解决方法】1、首先我们插入SD卡的时候,先要了解手机最大支持多少G的内存,很多朋友喜欢下载视频到手机手机上,因此会插入内存比较大的SD卡,可是如果手机不支持...

weixin_28752743的博客 4279

22、用户界面流程(UI Flow)全解析

本文全面解析了用户界面流程(UI Flow)的概念、创建步骤及其在系统设计中的应用。通过示例和操作步骤,详细介绍了如何确定屏幕范围、识别屏幕、创建过渡和标记触发器,并阐述了UI Flow在导航识别、验证、可用性优化、测试用例开发和需求推导中的重要作用。文章还结合问答系统案例,展示了UI Flow的实际应用价值,帮助读者深入理解并有效运用这一工具提升系统用户体验。

rice5的博客 153

第58篇:AI技术实战:基于深度学习的智能音频内容审核系统

深度学习技术为智能音频内容审核系统提供了强大的支持,通过CNN、RNN和Transformer等模型,能够实现高效的音频内容检测和过滤。使用TensorFlow和Keras可以快速构建和训练音频审核模型,而预训练模型则可以进一步提升性能。数据预处理、特征提取和性能优化是提升智能音频审核系统性能的关键。希望本文的代码示例和注意事项能帮助你更好地理解和应用这些技术。接下来,我们将继续探索更多AI技术实战案例。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 704

Android应用程序资源的查找过程分析

我们知道,在Android系统中,每一个应用程序一般都会配置很多资源,用来适配不同密度、大小和方向的屏幕,以及适配不同的国家、地区和语言等等。这些资源是在应用程序运行时自动根据设备的当前配置信息进行适配的。这也就是说,给定一个相同的资源ID,在不同的设备配置之下,查找到的可能是不同的资源。这个资源查找过程对应用程序来说,是完全透明的。在本文中,我们就详细分析资源管理框架是如何根...

weixin_30607659的博客 485

基于Multisim/TINA的H桥电机驱动电路设计与仿真分析

摘要 本文基于Multisim/TINA仿真平台,对H桥电机驱动电路进行了系统设计与分析。研究重点包括H桥拓扑结构的工作原理、PWM调速控制方法以及两种驱动方案对比分析。通过光耦隔离驱动与IR2110专用驱动IC的仿真对比,验证了IR2110自举电路在高低侧驱动中的优势。仿真实验着重分析了死区时间对防止直通现象的关键作用,并建立了直流电机的R-L-E等效模型进行动态特性仿真。结果表明,采用IR2110驱动方案配合适当的栅极电阻和自举电容参数,能够实现电机的高效双向调速控制。本研究为实际电机驱动系统的设计提供

huanghm88的专栏 137

文件存储

数据存储在我们android开发中是不可避免的,而且,我们也都知道数据存储的方式,文件存储,SharedPreference,数据库存储等。但是应该也有一部分人, 只是知道这些存储方式,或者说只知道怎么用,但是不知道具体被保存在什么地方。本篇文章将详细分析这三种存储方式。 算了不卖关子了,其实,在我看来数据存储,或者说数据的持久化,就分为两类。内部存储,外部存储。 /** * Returns the absolute path to the directory on the filesystem where

weixin_45799690的博客 194

华为OD机试双机位C卷:打印机队列 (C++/Py/C/Java/Js/Go)

华为OD机试双机位C卷 打印机队列,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 打印机队列。

qq_45776114的博客 1793

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

android 微信文件存储,安卓微信文件存储位置

新版的微信能录制小视频,也能把小视频发送给自己或分享给好友或者是朋友圈,也能将其收藏,但是,如果想要分享给qq好友等等,在微信是不能直接发送到qq上的,这时候就要找到其存储位置一切就都好办了。打开微信先录制好小视频,可以是提前录好的,然后再打开手机主面板的“文档”(小编的语言换成英语了所以是documents)打开手机的根目录,找到“tencent”点击打开,再找到“MicroMsg”这个文件夹点...

weixin_30802399的博客 8722

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

安卓的文件存储

前两天为了参加腾讯的面试,耽搁这个博客几天没有更新,结果还没出来,希望我能好运。 接下来继续复习安卓的文件存储,也就是安卓的IO。 安卓的文件存储有三种方式,第一种方式是使用shredPreferences,在shredPreferences中,文件的保存形式是XML文件的形式,文件保存的位置是\data\data\<包名>\shred_Prefs,保存的方式是使用键值对的形式,也就是key-v

爱吃青菜的鱼 733

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

安卓APP开发中的重要环节:数据和文件存储概述

软件开发中,如何存储是其中的重要一环,也是不可缺少的一环,这里讨论一.下。

红孩儿编程大师 912

android 文件存储位置,安卓各文件存储路径汇总(Android file path)

写下来,省得以后不记得到处翻:Environment.getDataDirectory() = /dataEnvironment.getDownloadCacheDirectory() = /cacheEnvironment.getExternalStorageDirectory() = /mnt/sdcardEnvironment.getExternalStoragePublicDirector...

weixin_35719581的博客 2076

Android文件存储

Android文件存储 1.getFilesDir(), 2.getCacheDir(), 3.getExternalFilesDir(null), 4.getExternalCacheDir(), 5.Environment.getExternalStorageDirectory(), 6.Environment.getExternalStoragePublicDirectory(Environ...

qq_24580361的专栏 1万+

Android 10.0文件存储问题

java.lang.IllegalArgumentException: Primary directory dq not allowed for content://media/external/images/media; allowed directories are [DCIM, Pictures]

Mr_Tony的专栏 1万+

Android 文件存储位置梳理

所有的安卓设备都有外部存储和内部存储,这两个名称来源于安卓的早期设备,那个时候的设备内部存储确实是固定的,而外部存储确实是可以像U盘一样移动的。 在后来的设备中,很多中高端机器都将自己的机身存储扩展到了8G以上,他们将存储在概念上分成了"内部internal" 和"外部external" 两部分,但其实都在手机内部。所以不管安卓手机是否有可移动的sdcard,他们总是有外...

风轻淡淡的博客 2856

掌握Win11安卓子系统:文件存储路径查找与更改步骤

随着Windows 11的推出,微软为用户带来了一个令人兴奋的新功能——安卓子系统(Windows Subsystem for Android,简称WSA)。这一功能允许用户在Windows 11上直接运行安卓应用,极大地扩展了操作系统的兼容性。然而,对于许多用户来说,如何管理这些安卓应用产生的文件,特别是如何查找和更改文件存储路径,仍然是一个难题。本文将详细介绍如何在Windows 11的安卓子系统中查找文件存储路径以及更改这些路径的方法。

Yori_22的博客 3522

文件存储技术-数据持久化-Android

~本特利~ 学习笔记持久化技术简介第一种方式:文件存储将数据存储到文件中从文件中读取数据案例-文件存储技术MainActivity.ktactivity_main.xml 持久化技术简介 数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或计算机关机的情况下,这些数据仍然不会丢失。 保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的。持久化技术提供了一种机制,可以让数据在瞬时状态和持久状态之间进行转换。 Android系统中主要提供了3种方式用于简单

~本特利~的博客 2715

一篇文章彻底明白Android文件存储

前言 Android中经常需要使用文件存储用户数据 本文将梳理各个版本中的文件存储,希望能帮上忙。 文件存储 思维导图 1. 简介 Android开发中有五种数据持久化API: 持久化 示意图 2. 内部存储空间(Internal Storage) 2.1 划分 内部存储 示意图 目录:/data/data/ 特点: 每个应用独占一个以包名命名的私有文件夹 在应用...

Android 开发架构 1705
上一篇: Android6.0动态权限分析
下一篇: 总结Android调用系统相机拍照遇到的坑
ruancoder
博客等级 码龄10年 42粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值