Kotlin 37. Android,Assets 以及 Res/raw 文件夹下存放调用文件介绍及对比

news2024/12/19 14:05:13

一起来学Kotlin:概念:24. Assets 以及 Res/raw 文件夹下存放调用文件介绍及对比

有些时候,我们需要将一些文件(e.g. JSON, Text, mp3, pdf, txt, etc)存放在某些特定文件夹下,方便调用。这里有两种可能性:放在 assets 文件夹下,或者放在 res/raw 文件夹下。一个简单的结论是,两个文件夹下都可以放置,读取各种后缀的文件,但两者也有一些区别,罗列如下:

  • assets文件夹下可以设置更灵活的文件名
  • assets文件夹下允许新建子文件夹
  • assets文件夹下允许在运行(run time)时列出文件名
  • res/raw 支持自动加载不同配置的文件
  • res/raw 从XML文件读取其文件夹中文件更容易

文章目录

  • 一起来学Kotlin:概念:24. Assets 以及 Res/raw 文件夹下存放调用文件介绍及对比
    • 1 如何创建 `assets` 以及 `res/raw` 文件夹
    • 2 如何读取 `assets` 以及 `res/raw` 文件夹里的文件
    • 3 区别1:`assets`文件夹下可以设置更灵活的文件名
    • 4 区别2:`assets`文件夹下允许新建子文件夹
    • 5 区别3:`assets`文件夹下允许在运行(run time)时列出文件名
    • 6 区别4:`res/raw` 支持自动加载不同配置的文件
    • 7 区别5:`res/raw` 从XML文件读取其文件夹中文件更容易


1 如何创建 assets 以及 res/raw 文件夹

请添加图片描述

如上图所示,我们可以对项目的 app 文件夹右键,New->Folder,然后就能看到 Assets Folder 以及 Raw Resource Folder 了。

2 如何读取 assets 以及 res/raw 文件夹里的文件

比如,我们创建了上述两个文件夹后,在文件夹里均创建一个文件,命名为 config.properties。两种调用方式比较类似,罗列如下:

val asset_read_string = applicationContext.assets.open("config.properties").bufferedReader().use{
    it.readText()
}

val raw_read_string = applicationContext.resources.openRawResource(R.raw.config).bufferedReader().use{
    it.readText()
}

3 区别1:assets文件夹下可以设置更灵活的文件名

assets文件夹下可以更宽松地命名文件,比如有一个空格(例如 some file name),或者有大写字母(例如 someFileName)。

res/raw 文件夹下的文件命名比较严格:File-based resource names must contain only lowercase a-z, 0-9, or underscore。应该是因为调用的时候需要以 R.raw.XXX 的形式。

4 区别2:assets文件夹下允许新建子文件夹

比如下图:

请添加图片描述

对于 res/raw 文件夹,这是不允许的。

5 区别3:assets文件夹下允许在运行(run time)时列出文件名

如果我们想列出 assets 文件夹中的所有文件,我们可以使用 list 功能并提供文件夹名称(或 “” 代表根目录。注意,list函数输入的是一个string,所以如果我们想要列出比如 assets 文件夹下的 assets1 子文件夹内的文件,这里的输入需要加双引号:"assets1")。

assets.list("root_folder_name_in_assets")?.forEach { 
    println(it)
}

对于 res/raw 文件夹,这是不可能的,我们必须在开发期间(compile)知道文件名,而不是运行时(run time)。

6 区别4:res/raw 支持自动加载不同配置的文件

对于 assets 文件夹,如果我们想为不同的配置(设备的语言、Android API、屏幕方向)读取不同的文件,我们需要手动检测配置并读取相应的文件。

但是对于 res/raw 文件夹则不需要。下面是一个例子:

请添加图片描述

对于 API 29,可能我们会有一些配置文件,但设备 API高于29,我们也会有一些配置文件。这个时候,系统就会出现两个 raw 文件。和 res 下面的其他文件夹一样,我们不需要手动去选择或进行配置。

7 区别5:res/raw 从XML文件读取其文件夹中文件更容易

对于 assets 文件夹,我们好像没有简单的方法可以让 XML 文件(例如 AndroidManifest.xml)直接读取 assets 下的文件。但对于 res/raw 就很方便,我们直接使用 @raw/filename 就可以。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

emqx桥接配置+常见问题解决+jmeter压测emqx

一,桥接资源配置及规则配置 Emqx桥接配置流程 1,配置资源并测试连接通过 规则引擎——>资源——>新建——>选择MQTT Bridge——>填写参数测试连接 参数描述详见3.1资源配置 2,配置规则 2.1根据实际业务选择合适sql 规则引擎…

洛谷P5015 [NOIP2018 普及组] 标题统计 C语言/C++

[NOIP2018 普及组] 标题统计 题目描述 凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符? 注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字 符数时,空格和换行符不计算在内。 输入格式 …

kubernates(k8s)全解

目录说明Kubernetes介绍应用部署方式演变kubernetes简介kubernetes组件kubernetes概念kubernetes集群环境搭建安装方式kubeadm二进制包集群类型安装要求最终目标准备环境环境初始化服务部署kubeadm中的命令(一般用不着)资源管理YAML语言介绍资源管理方式命令式对象管理kubectl命…

微服务架构设计介绍

软件架构是一个包含各种组织的系统组织,这些组件包括 Web服务器, 应用服务器, 数据库,存储, 通讯层), 它们彼此或和环境存在关系。系统架构的目标是解决利益相关者的关注点。 image Conway’s law: Organizations which design systems[...] are constrained to pro…

Ubuntu 20.04安装SQL Server

SQL Server 目前在 Red Hat Enterprise Server、SUSE Linux Enterprise Server 和 Ubuntu 上受支持。 还支持使用 Docker 在容器中运行。 Linux上安装SQL,不支持的功能或者服务 以前都是在Windows上安装SQL,其实SQL Server 的核心数据库引擎在 Linux 上…

【图像分类】卷积神经网络之AlexNet网络模型实现花卉图像识别(附代码和数据集,PyTorch框架)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手 共进,共创辉煌。 在上一篇博文中我们对AlexNet网络模型的结构进行了剖析,本篇博文,我们将使用PyTorch搭建AlexNet实现花卉识别,…

JavaScript 俄罗斯方块 - Canvas基础 画线

JavaScript 是前端核心, 掌握这门语言是步入前端高手行列必经之路, 现代前端当然别忘了还有TypeScript, 学习它需要面向对象(OOP)基础知识, 底层的浏览器原理、HTTP协议也必不可少, 本专栏从基础开始一步步带你实现俄罗斯方块小游戏, 让你从有趣的实战中学习JavaScript,事…

ubuntu安装gitlab

gitlab是什么?他有什么作用呢? gitlab是一个开源的git仓库管理软件,并提供web界面,方便管理git仓库。和github很相似,不过github暂时没有开源版本,项目必须托管到github官方网站,不能本地部署。很多公司考…

数据增强,扩充了数据集,增加了模型的泛化能力

数据增强(Data Augmentation)是在不实质性的增加数据的情况下,从原始数据加工出更多的表示,提高原数据的数量及质量,以接近于更多数据量产生的价值。 其原理是,通过对原始数据融入先验知识,加工…

【NFC音乐相册】简易制作

欢迎来到 Claffic 的博客 💞💞💞 前言: NFC音乐相册在前段时间火了一把,想必大家都听过了,最近我刷到了这个东西,闲来无事就弄了几个,这篇博客就记录下制作工序。 注:我所…

keepalive + nginx 来实现 对于nginx的高可用, 以及如何搭建主备模式

keepalive nginx 来实现 对于nginx的高可用, 以及如何搭建主备模式。 keeplived简介 Keepalived是用纯ANSI/ISO C编写的。该软件围绕一个中央I/O多路复用器进行连接,以提供实时网络设计。 1.1 Keepalived进程被分为3个不同进程 A.一个极简的父进程&#xff0c…

NLP大纲

第一章:概述 1. 什么是自然语言处理? 计算机具备人类的听、说、读、写、译、问、答、搜索、摘要、对话和聊天等能力 知识和常识进行推理和决策 支持客服、诊断、法律、教学等场景 2. 自然语言处理的主要任务有哪些? 分析、理解、转换、…

SpringBoot-运维实用篇

SpringBoot运维实用篇 1.SpringBoot程序的打包与运行 ​ 刚开始做开发学习的小伙伴可能在有一个知识上面有错误的认知,我们天天写程序是在Idea下写的,运行也是在Idea下运行的。 ​ 但是实际开发完成后,我们的项目是不可能运行在自己的电脑上…

图解LeetCode——剑指 Offer 46. 把数字翻译成字符串

一、题目 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数&#x…

spring boot3 一、 spring alibaba cloud 整合 网关 nacos config

jm-apis服务jm-user-api用户服务jm-apis-common公共模块jm-apis-common-bean公共beanjm-apis-common-conf公共配置jm-apis-common-tool公共工具jm-dubbo-apisRPC服务jm-dubbo-user-api用户RPC服务 jianmu-springboot3-springalibabacloud pom.xml <?xml version"1.0&…

电容学习(1)

电解电容 是具有极性的电容&#xff1b; 电解电容的体积大&#xff0c;只有在需要较大容值的时候才需要&#xff1b; 缺点&#xff1a;电解电容容值不稳定&#xff0c;容易随着温度和其他参数变化而变化&#xff1b;因此相对来说非电解电容更稳点一些&#xff1b; 电容的公式&…

如何定制一个智能洒水装置(养狗/养花人士请进)

目录 如何用智能地教狗狗上厕所如何定制一个智能洒水装置 背景 上一篇文章中提到了&#xff0c;我实现了一个自动检测狗狗有没有进厕所的功能。现在我们家的狗狗用它那不算大的小脑瓜&#xff0c;已经百分百学会&#xff08;但是&#xff01;也不知道它是不是聪明过头了&…

非常好看的html网页个人简历

一. 前言 文末获取gitee链接 在前几天逛b站的时候&#xff0c;发现了个比较实用的东西-----个人简介网页版&#xff0c;相当于网页版的个人简历&#xff0c;相较于PDF形式的&#xff0c;网页版所能呈现内容更加丰富&#xff0c;而且更加美观&#xff0c;在BOOS上被HR小姐姐要…

FL Studio21MAC电脑中文升级版安装图文教程

FL Studio版本有很多,每个版本各有优点。除了最新版本外,还有历史经典版本,用户可以根据自己的需求进行下载,FL Studio21是一款功能十分丰富和强大的音乐编辑软件&#xff0c;能够帮助用户进行编曲、剪辑、录音、混音等操作&#xff0c;让用户能够全面地调整音频&#xff0c;软…

2288hv5超融合服务器 数码管报888

【问题现象】 2288hv5超融合服务器&#xff0c;前面板数码管报888&#xff0c;电源灯黄灯闪烁&#xff0c;开不了机&#xff0c;ibmc网络是通的&#xff0c;但是web网页打不开 【问题原因】 iBMC的版本过低&#xff0c;iBMC在智能诊断数据库保护机制存在异常&#xff0c;导…