问题

为什么安卓系统的文件夹如此凌乱?

回答
安卓系统的文件夹确实容易让人觉得“乱”,尤其对于习惯了苹果iOS或桌面操作系统简洁风格的用户来说,初次接触可能会感到无从下手。这背后的原因其实是多方面的,涉及到底层设计理念、应用生态的复杂性以及用户自定义的自由度。

首先,咱们得明白安卓的文件系统是基于Linux的。这意味着它继承了Linux强大的文件管理能力,允许各种应用程序以相对自由的方式访问和存储数据。不像某些封闭系统,所有应用都被严格限制在自己的沙盒里,只能访问特定区域。安卓给了应用更多的“地盘”,所以也就有了更多的可能性,当然也就多了“乱”的可能性。

举个例子,你下载一个应用,它可能在存储根目录下创建一个以它自己名字命名的文件夹,里面放着它的配置信息、缓存文件等等。接着,你又安装了另一个应用,它可能也在根目录下创建自己的文件夹。这样一来,根目录下就可能出现一堆杂七杂八的文件夹,每个文件夹都对应一个应用,但你可能并不清楚它们里面具体是什么,或者什么时候需要用到它们。

更细致地说,安卓文件夹的“凌乱感”主要体现在以下几个方面:

应用自身的存储习惯不一: 虽然安卓系统提供了一些标准化的目录(比如`Download`、`DCIM`用于相机照片),但对于应用自己的数据,并没有一套极其严格的统一规范。有些应用会将所有数据都塞进一个大文件夹,有些则会创建许多子文件夹来分类存储。比如,有些游戏可能会在某个应用文件夹下再创建好几个用于存放不同游戏资源的子文件夹。这种个体差异就导致了用户看到的文件夹结构很不一致。

下载内容的多样性: 用户通过安卓手机下载的东西太多样化了。有图片、视频、音乐、PDF文档、压缩包、安装包(APK)等等。而且这些下载来源也五花八门:浏览器下载、社交软件下载、网盘下载、邮件附件等等。虽然很多下载都会默认进`Download`文件夹,但用户在文件管理器里手动移动、分类的需求也催生了各种自定义文件夹。有时候,我们自己为了方便整理,手动创建的文件夹也可能因为没有统一的规划,最终也加剧了“乱”的观感。

系统缓存与临时文件: 安卓系统为了提高运行效率,会生成大量的缓存文件和临时文件。虽然很多都存放在特定的系统目录(如`Android/data`或`Android/obb`,这些我们普通用户一般也不去主动访问),但这些文件夹本身如果不加区分地展示出来,也可能显得很多且杂乱。特别是`Android/data`这个文件夹,里面每个子文件夹都代表一个应用,里面又可能包含更复杂的目录结构,这对于不懂底层原理的用户来说,简直就是天书。

存储卡与内部存储的混合: 很多安卓设备允许用户插入SD卡来扩展存储空间。当用户将应用数据、下载文件等同时存放在内部存储和SD卡时,文件管理器需要同时管理这两个区域。如果用户不注意区分,在两个地方都可能出现同名的文件夹或文件,增加了查找和管理的难度。

用户自定义的自由度过高: 相对于iOS等系统,安卓更强调用户的自由度。这意味着用户可以随意创建、删除、移动文件和文件夹。这种自由虽然好,但也意味着用户可以“创造”混乱。比如,一个人可能为了方便,把所有下载的音乐都放在一个叫做“音乐集”的文件夹里,里面又按歌手、专辑分别创建子文件夹。另一个人可能觉得这样太麻烦,直接把所有音乐文件都丢进`Download`文件夹里。最终,看到的文件夹结构差异就很大。

应用数据的复杂性: 一些应用,特别是大型游戏或者需要大量数据的应用,它们在内部存储的数据量可能非常庞大,并且会进行细致的分类。这些数据有时候是为了优化加载速度,有时候是为了数据安全。但从外部文件管理器的角度来看,这些内部的复杂结构就成了难以理解的“杂乱”。

举个更具体的例子:

你下载了一个图片。它可能在`DCIM/Camera`里。你又用微信接收了一个文件,它可能在`Tencent/MicroMsg/Download`里。你用浏览器下载了一本书,它可能在`Download`里。然后你为了方便,手动把所有照片整理到一个叫做“我的照片”的文件夹,可能是在内部存储的根目录,也可能是在SD卡上的某个位置。这时候,你再打开文件管理器,可能会看到`DCIM`(里面有`Camera`等)、`Tencent`(里面还有更多子文件夹)、`Download`,以及你自己创建的“我的照片”。这还没算上一些应用可能自动生成的其他文件夹。

当然,随着安卓版本的更新和文件管理器的优化,情况也在不断改善。很多现代的文件管理器提供了更好的分类、搜索和过滤功能,可以帮助用户更快地找到所需文件,一定程度上缓解了“凌乱”的观感。但从根本上说,安卓系统文件层面的设计理念,以及其开放的应用生态,注定了它在文件管理上会比一些更封闭的系统显得复杂和“不那么整洁”。这就像一把双刃剑,带来了强大的自由度和可能性,但也伴随着一定的管理挑战。

网友意见

user avatar

因为开发者不遵守规范。Android 本身提供了 /data/data/<包名> 这样的内部目录和 /sdcard/Android/data/<包名> 这样的外部目录用于存储 APP 运行时的关键数据,为什么开发者还要在 SD 卡或模拟 SD 卡根目录建一个又一个文件夹强奸用户视觉,我想不明白。

而且 API 方面也是获得系统目录要比获得 SD 卡根目录再逐层嵌套方便得多啊。就比如下面这个例子(只是举例说明,没有黑腾讯的意思)

       // 获得 /sdcard/Android/data/com.tencent.mobileqq/files/head 目录的字符串 String path = getExternalFilesDir("head").getAbsolutePath();      

怎么也比

       // 获得 /sdcard/tencent/MobileQQ/head 目录的字符串 String path = Environment.getExternalStorageDirectory().getAbsolutePath()             + "/tencent/MobileQQ/head";      

要简洁得多啊,为什么开发者要费力不讨好,是为了存在感吗?腾讯系的我也就认了,好歹全部都放在 tencent 里面。阿里系的应用则是变本加厉,.com.taobao.dp, .DataStorage, .SystemConfig, .UTSystemConfig, alipay, com.eg.android.AlipayGphone。这么多文件夹全部塞到我的 SD 卡根目录,存在感十足好么。当然,阿里系应用你们的确是找足存在感了,我相当重视你们,不惜在 SD 卡根目录下建立同名空文件也要阻止你们创建这些垃圾。


顺便也解释一下我屏蔽掉的其他几个文件夹:

.com.taobao.dp、.DataStorage、.SystemConfig、.transportext、.UTSystemConfig:全都是阿里系应用产生的毫无意义的东西。

.hjpushlog:沪江小 D 词典的日志文件。

.qmt、qmt:QQ 同步助手产生的文件,貌似是记录 UUID,用于给我推送定向广告。

.um:友盟广告 SDK 产生的 UUID 文件,用于给我推送定向广告。

BaiduMapSDK:百度地图 SDK 产生的垃圾。TencentMapSDK 同理,是腾讯地图 SDK 的。【2019-9-10 更新:屏蔽 TencentMapSDK 后,微信小程序(比如青桔单车)里的地图都显示不出来了,请谨慎屏蔽。BaiduMapSDK 的话,新版百度地图 SDK 已经默认将缓存文件放到 /sdcard/Android/data/<包名>/files/BaiduMapSDKNew 里去了,所以只有在用旧版 SDK 的应用会受到影响。也请谨慎屏蔽。就这一点来说,腾讯应该向百度学习!】

Catfish:QQ、TIM 都会产生这玩意。

hrslog、log:手机系统产生的日志文件。我已经退出了用户体验计划,这些日志文件除了占空间以外毫无用处。

mfcache、msc:QQ 产生的东西。

tbs、tbslog:微信产生的毫无卵用的日志文件。而且动辄几十兆几百兆大小。

建立以上名字的空文件,阻止 APP 创建它们的同名文件夹不会对手机造成任何影响,亲测。

我最痛恨的就是 APP 在我手机里存储各种日志文件。在这日志文件里,我的一举一动都被记录了下来,毫无隐私。我手机又不是服务器,我对日志不感兴趣。收集 bug 什么的完全不能成为理由,因为你收集 bug 的时候可以等日志上传完毕后就立刻删除,而不应该继续这样一直霸占着我手机空间。我可不想被别有用心的人盯上。

user avatar

android是有标准的,比如缓存,本地数据放哪里

可惜很多人不吃这一套,喜欢直接根目录,刷存在感

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有