Android Assets工具类
来源:互联网 发布:删除数据库sql 编辑:程序博客网 时间:2024/06/09 23:28
Assets工具类
1. Assets简介
Android 中资源分为两种:
- 一种是res下可编译的资源文件, 这种资源文件系统会在R.java里面自动生成该资源文件的ID,访问也很简单,只需要调用R.XXX.id即可
- 第二种就是放在assets文件夹下面的原生资源文件,放在这个文件夹下面的文件不会被R文件编译,所以不能像第一种那样直接使用.Android提供了一个工具类,方便我们操作获取assets文件下的文件:AssetManager。
AssetManager
AssetManager提供了如下方法用于处理assets:
//列出该目录下的下级文件和文件夹名称String[] list(String path);//以顺序读取模式打开文件,默认模式为ACCESS_STREAMINGInputStream open(String fileName);//以指定模式打开文件。读取模式有以下几种://ACCESS_UNKNOWN : 未指定具体的读取模式//ACCESS_RANDOM : 随机读取//ACCESS_STREAMING : 顺序读取//ACCESS_BUFFER : 缓存读取InputStream open(String fileName, int accessMode);//关闭AssetManager实例// 注意: getAssets()得到的AssetManager 不要close,因为这个AssetManager还会被系统使用。void close()
注意: getAssets()得到的AssetManager 不要close,因为这个AssetManager还会被系统使用。
2. Assets工具类结合Gson获取实体类对象
Android开发中,有时候在后台服务没有做好的情况下,我们需要在前端调UI,所以就需要创建假数据,即实体类对象,用来模拟在网络获取的实体类对象。所以,我们可以在本地assets文件夹下放一个文本文件,用来存放一个假的数据,然后结合Assets相关API,读取改文件并解析为实体类。
本案例中使用json来传递数据,并使用Google的开源库Gson来解析Json。
具体代码为:
public final class AssetsUtils { private AssetsUtils() { throw new UnsupportedOperationException("u can't instantiate me..."); } /** * 从文件中获取字符串 * * @param fileName * @param context * @return */ public static String getString(String fileName, Context context) { StringBuilder stringBuilder = new StringBuilder(); try { AssetManager assetManager = context.getAssets(); BufferedReader bf = new BufferedReader(new InputStreamReader( assetManager.open(fileName))); String line; while ((line = bf.readLine()) != null) { stringBuilder.append(line); } } catch (IOException e) { e.printStackTrace(); } return stringBuilder.toString(); } /** * 根据字符串返回实体类 * * @param fileName * @param context * @param tClass * @param <T> 实体类 * @return */ public static <T> T getJsonObject(String fileName, Context context, Class<T> tClass) { String jsonStr = getString(fileName, context); Gson gson = new Gson(); return gson.fromJson(jsonStr, tClass); }}
首先,通过getString方法,获取文件的字符串,然后,通过泛型方法getJsonObject,来将解析字符串,转换为实体类对象。
DemoActivity为AssetsActivity。对应实体类代码为:RepositoriesBean。可以使用AS的插件GsonFormat来自动生成。Activity代码为:
public class AssetsActivity extends BaseActivity { private static final String TAG = "AssetsActivity"; private static final String REPOSITORIES_FILE_NAME = "github_repositories.json"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_assets); testJsonObject(); } /** * */ private void testJsonObject() { RepositoriesBean repositoriesBean = AssetsUtils.getJsonObject(REPOSITORIES_FILE_NAME, AssetsActivity.this, RepositoriesBean.class); boolean incomplete_results = repositoriesBean.isIncomplete_results(); int total_count = repositoriesBean.getTotal_count(); List<RepositoriesBean.ItemsBean> items = repositoriesBean.getItems(); LogUtils.d(TAG, "testJsonObject, incomplete_results: " + incomplete_results + "\ntotal_count: " + total_count + "\nitems.size(): " + items.size()); }}
该Demo使用Github的搜索仓库API的返回结果作为实体类。更多Github API的内容请参考GitHub API 学习笔记 Search API和Github 开发官方地址。
参考:
Android中读取assets目录下的文件详细介绍
阅读全文
0 0
- 【Android】Assets工具类
- Android Assets工具类
- Android /assets
- android assets
- android 资源和Assets
- Android:读取assets资源
- Android Assets文件大小限制
- android assets文件夹应用
- android中的assets
- android assets 文件读取
- Android assets, raw
- Android assets详解
- Android之assets资源
- Android 获取assets绝对路径
- Android studio 之 assets
- android assets的使用
- android文件读取assets
- Android assets资源读取
- WordPress版微信小程序安装使用说明
- 使用vue开发的你是不是 真正需要Vuex
- Color the ball(线段树)
- 实现洗牌算法
- 学习2
- Android Assets工具类
- SVN系统实现多系统环境下的代码审核与版本同步
- 多线程断点下载
- SecureCrt 配置脚本查看日志
- style.left和offsetLeft和offsetWidth和scrollTop区别
- Austin 第二天 | 炫技!Google 语音操控 GKE 部署集群及扩容服务
- 使用netty+zookeeper+protobuf实现一个RPC过程
- Java虚拟机详细解析--JVM类加载过程+内存分配+GC算法+垃圾回收器分类
- sklearn整理