Android读写assets目录下面的资源文件(文件夹)

android读写assets目录下面的资源文件(文件夹) Android除了提供/res目录存放资源文件外,在/assets目录也会提供存放资源文件,在/assets目录下面不会在R.java里面自动生成ID,所以读取assets目录下面的资源文件需要提供路径,我们可以通过AssetManager类来访问这些文件。打包到apk中 阅读详情

Android除了提供/res目录存放资源文件外,在/assets目录也会提供存放资源文件,在/assets目录下面不会在R.java里面自动生 成ID,所以读取assets目录下面的资源文件需要提供路径,我们可以通过AssetManager类来访问这些文件。 
    作者需要实现从 A.apk( 资源apk ,把所有的资源如:so、apk、可执行文件等放到assets目录下面,apk没有实现逻辑代码)拷贝资源到指定目录下,所以作者创建了一个实现资源拷贝逻辑的 B.apk( 一个Service,也可用Activity实现),由于拷贝路径一般情况下 是不可访问或者创建的(每个apk安装之后只能访问/data/data/自己包名/下面的私有空间),作者需要这个apk能够获取系统权限 (System权限),则必须在AndroidManifest.xml声明shareduserid,具体如何操作下一节进行记录。

一、AssetManager读取文件常用的几个API

1.文件读取方式
AssetManager.open(String filename),返回的是一个InputSteam类型的字节流,这里的filename必须是文件,而不能是文件夹,AssetManager打开 资源文件的open方法是一个重载方法,可以添加一个打开方式的int参数,根据参数不同可做相应操作。具体请看官方文档http://web.mit.edu/clio/MacData/afs/sipb/project/android/docs/reference/android/content/res/AssetManager.html
2.资源文件是可以存在文件夹以及子目录
public final String[]list(String path),返回当前目录下面的所有文件以及子目录的名称。可以通过递归遍历整个文件目录,实现所有资源文件的访问。String[] Array of strings, one for each asset. These file names are relative to 'path'. You can open the file by concatenating 'path' and a name in the returned string (via File) and passing that to open().

二、相关实现代码
资源APK(A.apk)

具体实现代码片段,由于使用系统权限,生成的路径可以自己改一下B.apk

 
  1. public void onCreate(Bundle savedInstanceState) { 
  2.        super.onCreate(savedInstanceState); 
  3.        setContentView(R.layout.main); 
  4.        try { 
  5.           ctxDealFile = this.createPackageContext("com.zlc.ipanel", 
  6.                   Context.CONTEXT_IGNORE_SECURITY); 
  7.        } catch (NameNotFoundException e1) { 
  8.            // TODO Auto-generated catch block 
  9.            e1.printStackTrace(); 
  10.        } 
  11.        btn3.setOnClickListener(new OnClickListener() { 
  12.            @Override 
  13.            public void onClick(View v) { 
  14.                 // TODO Auto-generated method stub 
  15.                try { 
  16.                     String uiFileName = "ipanelJoin"; 
  17.                     deepFile(ctxDealFile, uiFileName); 
  18.              } catch (Exception e) { 
  19.                    // TODO Auto-generated catch block 
  20.                    e.printStackTrace(); 
  21.                    textView.setText("file is wrong"); 
  22.               } 
  23.             } 
  24.       }); 
  25.         // 
  26. } 
  27. public void deepFile(Context ctxDealFile, String path) { 
  28.         try { 
  29.            String str[] = ctxDealFile.getAssets().list(path); 
  30.           if (str.length > 0) {//如果是目录 
  31.                File file = new File("/data/" + path); 
  32.               file.mkdirs(); 
  33.               for (String string : str) { 
  34.                  path = path + "/" + string; 
  35.                  System.out.println("zhoulc:\t" + path); 
  36.                   // textView.setText(textView.getText()+"\t"+path+"\t"); 
  37.                    deepFile(ctxDealFile, path); 
  38.                    path = path.substring(0, path.lastIndexOf('/')); 
  39.               } 
  40.            } else {//如果是文件 
  41.                InputStream is = ctxDealFile.getAssets().open(path); 
  42.                 FileOutputStream fos = new FileOutputStream(new File("/data/" 
  43.                       + path)); 
  44.               byte[] buffer = new byte[1024]; 
  45.               int count = 0; 
  46.                 while (true) { 
  47.                   count++; 
  48.                   int len = is.read(buffer); 
  49.                    if (len == -1) { 
  50.                       break; 
  51.                  } 
  52.                   fos.write(buffer, 0, len); 
  53.              } 
  54.              is.close(); 
  55.              fos.close(); 
  56.          } 
  57.       } catch (IOException e) { 
  58.            // TODO Auto-generated catch block 
  59.            e.printStackTrace(); 
  60.        } 
  61. } 
VASP结构优化入门:输入文件、Linux命令与报错排查 第一性原理计算的核心,是用密度泛函理论数值求解电子基态,得到体系总能量与原子受力;结构优化则是在势能面上反复迭代,寻找原子受力和能量趋于稳定的局部最低点。对周期性晶体、二维材料、表面吸附和缺陷体系,VASP 是常见实现,而真正卡住入门者的常是 POSCAR、KPOINTS、INCAR、POTCAR 的格式一致性,以及 Linux 命令行下的文件准备、作业提交、收敛监控和报错排查。把最小可复现流程跑通后,DFT 计算不再只是理论概念,而能迁移到掺杂、能带、态密度等更复杂场景。围绕这条链路,以一次完整结构优化为 阅读详情

相关推荐

Android读取数据库信息

一个Android读取数据库信息的例子供大家参考学习。

Android 如果读取asserts 中的db文件,并进行查询操作

   前言:前篇已经讲了,如何将excel表格转化成db文件使用。不清楚的朋友可以看下我上篇的文章。然而在这里,主要说下怎么操作assserts目录下的db文件,进行对数据库的查询操作。废话不多说,开始吧!       步骤:              1,在项目中创建一个asserts 目录,有很多人都是手动添加文件夹,命名asserts,其实studio可以直接创建,如图        ...

灵思致远Leansmall的博客 1308

Android读取Assert资源目录下数据库,数据库操作

Android读取Assert资源目录下数据库,数据库操作; Android读取Assert资源目录下数据库,数据库操作 Android读取Assert资源目录下数据库,数据库操作

android常见的资源文件,android读写assets目录下面的资源文件(文件夹)

Android除了提供/res目录存放资源文件外,在/assets目录也会提供存放资源文件,在/assets目录下面不会在R.java里面自动生成ID,所以读取assets目录下面的资源文件需要提供路径,我们可以通过AssetManager类来访问这些文件。作者需要实现从A.apk(资源apk,把所有的资源如:so、apk、可执行文件等放到assets目录下面,apk没有实现逻辑代码)拷贝资源到指...

weixin_39566387的博客 1055

读写Android中assets目录下的文件的方法详解

主要介绍了读写Android中assets目录下的文件的方法详解,assets和res/raw工程目录下都可以放一些文件,这些文件将被打包到APK中应用使用,需要的朋友可以参考下

Android开发实现读取assets目录下db文件的方法示例

主要介绍了Android开发实现读取assets目录下db文件的方法,结合实例形式分析了Android针对assets目录下SQLite数据库文件的相关操作技巧,需要的朋友可以参考下

Android 文件读写最全解析

本文目录文件读写概述读取raw目录文件读取assets目录文件data/data/(包名) 目录文件读写写数据读数据sdcard文件读写申请动态权限写数据读数据完整代码 文件读写概述 raw下的和assert下的文件可以以资源文件的形式读取,这些目录的数据只能读取,不能写入,两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。 读取raw目录文件 在读文件前我们先把raw 文...

lucashu的博客 2万+

Android操作存放在assets文件夹下SQLite数据库的方法

主要介绍了Android操作存放在assets文件夹下SQLite数据库的方法,实例分析了Android操作SQLite数据库的相关技巧,需要的朋友可以参考下

assert文件夹 设置android_读写Android中assets目录下的文件的方法详解

Android资源文件大致可以分为两种:第一种是res目录下存放的可编译的资源文件:这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件比较简单,通过R.XXX.ID即可;第二种是assets目录下存放的原生资源文件:因为系统在编译的时候不会编译assets下的资源文件,所以我们不能通过R.XXX.ID的方式访问它们。那我么能不能通过该资源的绝对路径去访问它们呢?因为...

weixin_39781143的博客 1145

基于51单片机语音识别智能台灯设计

智能台灯;语音识别;STC89C52RC单片机

Benso_H的博客 5842

高通平台 5G RF调试总结

目录: 1.QRCT4的使用 2.RFC配置 3.5G CA 配置概括 4.RFPD 运行及错误分析 5.CA吞吐率问题分析

嘿v小米的博客 9679

Android文件读写操作(assets 文件、 raw文件、内部存储文件、外部存储文件)

Android中的文件读写操作是不可或缺的,每个应用都会涉及到读写操作。这里将读写操作分成了四个部分 assets文件夹中文件数据的读取 raw文件夹中的文件数据的读取 Android内部存储文件的读写 Android外部存储文件的读写

小雨点滴滴答答笑个不停 1万+

搜索引擎——ElasticSearch汇总

汇总——ElasticSearch篇 全文检索 问题1:什么是全文检索? 基本概念:对**非结构化数据/结构化数据**先建立**索引**,再对索引进行搜索**文档**的过程叫做全文检索。 什么是非结构化与结构化数据? - 非结构化数据:没有固定的格式的数据(html,word,excel)---没有固定长度,字段约束,描述,散列数据 - 结构化数据:有固定的格式的数据(如:数据库数据)---有固定长度(varchar(50)),字段类型,描述修饰数据 搜索算法:顺序扫描法、倒排索引法 - 顺序

alonewolf_99的博客 1839

Android 如何访问Assets文件夹里面的资源

Android 读取assets的数据库文件 是先把assets目录中的数据库文件拷贝到app的相应目录中,然后再对这个数据库文件进行读写。 public class DBManger { public static final String DB_NAME = "festival.db";//数据库 public static final String PACKAGE_NAME ...

2915

eMMC FFU固件更新实战:从协议解析到设备修复

本文详细解析eMMC FFU固件更新技术,从协议原理到实战操作,涵盖EXT_CSD寄存器操作、命令流状态机解析及专业工具使用指南。通过真实维修案例,展示如何利用FFU机制修复设备故障,并提供高级优化技巧与安全注意事项,是硬件工程师和维修技术人员的实用参考。

weixin_29191761的博客 378

Python 爬虫实战:亚马逊 + eBay 商品信息跨平台抓取(价格 / 销量 / 评价对比)

亚马逊和 eBay 是全球知名的电商平台,拥有海量的商品信息。对于消费者来说,比较不同平台上的商品价格、销量和用户评价可以帮助他们找到性价比最高的商品。对于商家而言,了解竞争对手的商品信息有助于优化自身的产品策略和定价策略。然而,手动在两个平台上逐一比较商品信息是非常耗时且低效的。因此,开发一个能够自动抓取并对比这两个平台商品信息的爬虫工具具有重要的实际意义。

yansideyucsdn的博客 616

android 写入资源文件,Android进阶之路——文件读写

今天Leo要给大家总结一些关于Android文件读写的操作,在大家遇到关于这方面的问题,就不用东拼西凑的百度来百度去的,好了,话不多说,切入正题。一、概要apk中有两种资源文件,raw下的和assert下的,这些数据只能读取,不能写入。更重要的是该目录下的文件大小不能超过1M。SD卡中的文件使用FileInputStream和FileOutputStream进行文件的操作。存放在数据区(/data...

bobo的博客 934

【ArcGIS Pro微课1000例】0067:ArcGIS Pro3.4.2学习版下载及安装教程

【ArcGIS Pro微课1000例】0067:ArcGIS Pro3.4.2学习版网盘下载及安装教程

智慧空间实验室 2387

android assets文件夹资源的访问

https://www.cnblogs.com/zhaoyanjun/p/4584342.html 1、assets文件夹里面的文件都是保持原始的文件格式 。 2、assets中的文件只可以读取而不能进行写的操作。 3、assets目录下的资源文件不会在R.java自动生成ID,所以读取assets目录下的文件必须指定文件的路径。 4、assets则可以有目录结构,也就是assets目录下可以再建...

快乐李同学的博客 674

《Zephyr OS 入门与实战》第3章:第一个 Zephyr 程序 - Blinky 实战

解决方法:确认设备树overlay文件已正确加载。返回值,确认驱动初始化状态。

2301_79143213的博客 540

手把手教你学Simulink--复杂环境适应的四足机器人领域仿真建模实例:构建一个基于Simulink的四足机器人动态平衡保持仿真模型

通过上述步骤,你可以构建一个基本的基于Simulink的四足机器人动态平衡保持仿真模型。此模型不仅有助于理解四足机器人在复杂环境中的动态平衡控制原理,也为进一步优化提供了基础。随着技术的发展,还可以探索更多高级功能,如自适应步态调整、强化学习等,以提高机器人的智能性和适应性。

MHD0815的博客 236
上一篇: android文件读取assets
下一篇: android d的shape使用即边框的设计
zhcoo7
博客等级 码龄12年 1粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值