assetmanager(assetmanager添加文件)

assetmanager(assetmanager添加文件)

Android学习–Assets资源文件读取及AssetManager介绍

      APK安装过程    

     复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录,Android系统在sdcard上为每一个应用分配了存储路径:/sdcard/Android/data/$(应用的包路径),该路径可以通过 context.getExternalFilesDir 得到,一般应用卸载的时候,该目录也会随之被删除。

      Android资源文件分为两类: 

      第一种是res目录下存放的可编译的资源文件,编译时,系统会自动在R.java中生成资源文件的ID,所以访问这种资源比较简单,通过在程序中调用R.id.filenam  e即可。    

      另一种是assets目录下存放的原始资源文件,因为系统在编译的时候不会编译assets下的资源文件,所以我们不能通过R.id.filename的方式访问它们。那我么能不能通过该资源的绝对路径去访问它们呢?因为apk安装之后会放在/data/app/**.apk目录下,assets被绑定在apk里,以apk形式存在,并不会解压到/data/data/YourApp目录下去,所以我们无法直接获取到assets的绝对路径,因为它们根本就没有独立存在。 

       res/raw和assets的相同点:  

      1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。

     res/raw和assets的不同点:   

     1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。    

     2.res/raw不可以有目录结构,而assets则可以有目录结构(在其目录下可以再建文件夹)   

     3.读取res/raw下的文件资源,通过以下方式获取输入流:InputStream is=getResources().openRawResource(R.id.filename); 读取assets下的文件资源,通过以下方式获取输入流:InputStream is =getResources()..getAssets().open(“filename”);  

     AssetManager管理对assets文件夹资源的访问

    查看官方API可知,AssetManager提供对应用程序的原始资源文件进行访问;这个类提供了一个低级别的API=1,它允许你以简单的字节流的形式打开和读取和应用程序绑定在一起的原始资源文件。主要用到list()及open()方法。

  finalString[]        list(Stringpath)     返回指定路径下的所有文件及目录名,path是相对路径,是assets子目录。

  finalInputStream     open(String fileName)      使用 ACCESS_STREAMING模式打开assets下的指定文件,fileName是相对路径,是assets子目录。

  finalInputStream      open(String fileName,int accessMode)   使用显示的访问模式打开assets下的指定文件。

  下面这个类,主要功能是通过递归方式,实现对assets下的某个子目录文件读取操作,并复制到指定路径。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/23554.html

(0)
上一篇 2023-10-24 16:30
下一篇 2023-10-24

相关推荐

  • 递归和堆栈

    递归和堆栈持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情 让我们回到函数,进行更深入的研究。 我们的第一个主题是 递归(recursion) 。 如果你不是刚接触

    2023-11-16
    111
  • 从零开始开发贪吃蛇小游戏到上线系列

    从零开始开发贪吃蛇小游戏到上线系列引言 笔者相信小伙伴们都知道贪吃蛇这个游戏,它的基本游戏规则:玩家扮演一条小蛇,在有限的空间内不断吃

    2023-11-14
    110
  • Nginx 反向代理及其应用实践:提高网站性能和安全性

    Nginx 反向代理及其应用实践:提高网站性能和安全性 Nginx 反向代理及其应用实践:提高网站性能和安全性

    2024-03-30
    128
  • c++选择排序算法代码_java排序代码

    c++选择排序算法代码_java排序代码前言:排序就是重新排列表中的元素,是表中的元素满足按关键字递增或递减的过程。为了查找方便,通常要求这些通常要求计算机中的,表示按关键字有序的算法

    2022-12-14
    134
  • 阿里巴巴mysql面试_MySQL面试

    阿里巴巴mysql面试_MySQL面试迎面走来了一个风尘仆仆的身穿格子衫的男子,手里拿着一个MacBook Pro,看着那稀少的发量,和那从容淡定的眼神。 我心里一颤,我去,这是架构师,架构师来面我技术面,我心里顿时不淡定了,表面很稳实则心里慌得一批。 果然,他手里拿着我的简历,快速的扫了一下,然后用眼角余光看了一…

    2023-05-23
    114
  • MySQL系列– 1.MySQL架构「建议收藏」

    MySQL系列– 1.MySQL架构「建议收藏」1. 逻辑架构 服务器基于用户名、原始主机信息和密码对客户端进行认证,连接成功后会验证某个特定操作的权限。 用户可以通过特殊的关键字提示(hint)优化器,影响MySQL的决策过程。也可以请求优化器解释(explain)优化过程的各个因素,便于用户重构查询和schema,修改相…

    2023-04-02
    130
  • Nginx与反向代理的应用场景

    Nginx与反向代理的应用场景Nginx与反向代理的应用场景

    2024-03-30
    128
  • 【计算机网络】网络基础

    【计算机网络】网络基础@TOC 1. 网络发展 计算工作是不可能一个科学家搞出来的,注定是一群科学家协同工作, 给每一个科学家配上电脑,那么科学家之间的电脑也是协同工作的 人只要用计算机,计算机就必须要协同 古代打仗,每个

    2023-11-11
    108