Android中文件存储路径

本文全面解析了Android应用的存储方式,包括内部存储和外部存储的结构、路径获取方法及使用建议。介绍了/data、/sdcard等关键路径及其获取API,如Context#getFilesDir()和Environment#getDataDirectory()。特别关注了不同API版本下的存储差异,如Android 4.4(API19)前的机身存储定义。

参考博客

彻底搞懂Android文件存储—内部存储,外部存储以及各种存储路径解惑

概览图

路径旁边的 @link标志的 是他们的该路径获取方法

/**
  * Android的存储结构
  *
  *  1.内部存储(非内存):
  *  /data {@link Environment#getDataDirectory()}
  *      /data
  *          /package name
  *              /files      {@link Context#getFilesDir()}
  *              /cache      {@link Context#getCacheDir()}
  *              /自定义名称  {@link Context#getDir(String, int)} // {@link Context#MODE_PRIVATE}
  *              ...
  *  2.外部存储:
  *  2.1 机身
  *  /sdcard {@link Environment#getExternalStorageDirectory()} //注意不同的版本可能打印显示不同的名字(但是指向同一个目录)
  *      /Android
  *          /data
  *              /package name
  *                  /files
  *                      /自定义  {@link Context#getExternalFilesDir(String)}
  *                  /cache          {@link Context#getExternalCacheDir()}
  *      /other {@link Environment#getExternalStoragePublicDirectory(String)}
  *
  *
  *  2.2 SD卡
  *  {@link Context#getExternalCacheDirs()} 遍历得到
  *
  *  tips:
  *      判断外部存储是否可用:
  *      {@link Environment#getExternalStorageState()} == {@link Environment#MEDIA_MOUNTED}
  */

说明

  • 内部存储非内存,但是一般情况下我们不建议使用它,使用外部存储(如果外部存储不可用,则用内部存储)
  • 注意**Android4.4(API19)**以前机身自带存储不算外部储存
<think> 我们之前讨论的是如何给特定目录添加中文字体,现在用户的问题是:“我想查找查看系统中文字体存储路径的方法”。结合引用内容,我们可以总结出几个关键点: 1. 引用[1]提到了Android系统的字体路径,但用户现在问的是系统(可能是Linux)的中文字体存储路径。 2. 引用[2]中提到了一个路径`/usr/share/fonts/chinese`,并说明如果实际路径不同需要修改定义。 3. 引用[4]中提到了在Linux服务器上安装中文字体的步骤,包括创建目录`/usr/share/fonts/chinese`并执行一系列命令。 因此,我们可以推断用户可能是在Linux系统上查找中文字体的存储路径。在Linux中,字体存储的默认路径是`/usr/share/fonts`,但中文字体可能位于该目录下的子目录(如`chinese`)中。此外,还可能存在其他路径。 下面我将整理查看系统中文字体存储路径的方法: </think> ### 查看系统中文字体存储路径的方法 在Linux系统中,可以通过以下步骤查找中文字体存储路径: #### 1. **使用字体配置工具查询** ```bash fc-list | grep -i "chinese\|中文" ``` > ✅ 输出示例:`/usr/share/fonts/chinese/NotoSansCJK.ttc: Noto Sans CJK SC,思源黑体:style=Regular` > 其中`/usr/share/fonts/chinese/`就是字体路径[^2] #### 2. **检查标准字体目录** ```bash # 检查默认字体目录 ls -l /usr/share/fonts # 查找特定中文字体(如宋体) find /usr/share/fonts -name "*SimSun*" -o -name "*Kai*" ``` > 多数系统将中文字体存放在`/usr/share/fonts/chinese/`或`/usr/share/fonts/truetype/`子目录下[^2][^5] #### 3. **查看字体缓存信息** ```bash fc-cache -v | grep -i "chinese" ``` > 会显示已缓存的中文字体路径及字体文件数量 #### 4. **检查应用程序配置文件(特殊场景)** 某些应用(如Zabbix)会单独指定字体路径: ```bash grep -r "ZBX_FONTPATH" /etc/ ``` > 若输出类似`define('ZBX_FONTPATH', '/custom/path/fonts');`则为自定义路径[^2] #### 5. **验证字体路径有效性** ```bash # 检查路径是否存在 ls -ld /usr/share/fonts/chinese # 验证字体文件类型 file /usr/share/fonts/chinese/*.ttf | grep -i "truefont" ``` ### 路径查询原理示意图 $$ \text{系统字体配置} \rightarrow \text{字体缓存数据库} \xrightarrow{\text{fc-list}} \text{可读路径信息} $$ ### 注意事项 1. Android系统路径不同:`/system/fonts/`(如DroidSans.ttf)[^1] 2. Windows CE系统需注意字体加载顺序,否则显示方框[^3] 3. 容器环境需要检查挂载卷配置[^4] 4. 精简系统可能使用子集字体(如SimSun Subset 2_50)[^5] --- ### 相关问题 1. 如何修复Linux系统中文显示为方框的问题?[^3] 2. 如何在Docker容器中添加中文字体支持?[^4] 3. 如何区分系统字体和用户安装的字体? 4. 中文字体文件有哪些常见格式?(如.ttf .ttc .otf)[^4][^5] 5. 如何在程序中指定自定义字体路径?[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布鲁格若门

对你有用的话真是太好了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值