通过设备管理对象获取assets的文件资源

简介: 通过设备管理对象获取assets的文件资源

效果展示

具体实现

导入第三方库

在build.gradle(:app)的dependencies中加入以下代码引用第三方库

//Json库
implementation 'com.alibaba:fastjson:1.2.76'
• 1
• 2

项目结构

assets文件夹位置

assets文件夹需要带小绿标志,否则会找不到文件(可以看下面创建步骤来)

创建步骤

src右键New点击Folder下面的Assets Folder

+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

随后会出来这个页面,要选中Change Folder Location,然后接着看下面的图(有具体操作步骤)

+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

勾选换路径,这里选择放在src文件夹下,和main为同一级,点击Finish,创建后如果和博主的图标一致即创建成功

代码实现

ReadWriteUtils

package top.gaojc.util;

import android.content.Context;
import android.content.res.AssetManager;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class ReadWriteUtils{

  //从assets资源文件中读取返回字符串
    public static String readStringFromAssets(Context context, String fileName) {
        //通过设备管理对象 获取Asset的资源路径
        AssetManager assetManager = context.getAssets();

        InputStream inputStream = null;
        InputStreamReader isr = null;
        BufferedReader br = null;

        StringBuffer sb = new StringBuffer();
        try {
            inputStream = assetManager.open(fileName);
            isr = new InputStreamReader(inputStream);
            br = new BufferedReader(isr);

            sb.append(br.readLine());
            String line = null;
            while ((line = br.readLine()) != null) {
                sb.append("\n" + line);
            }
            br.close();
            isr.close();
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null) {
                    br.close();
                }
                if (isr != null) {
                    isr.close();
                }
                if (inputStream != null) {
                    inputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sb.toString();
    }

}

Test.java

public class Test{

  private int intValue;
    private String strX;
    private String strY;
    
  //示例代码
  private void getAssetsValue() {
    String bannerConfig = DialogManager.readStringFromAssets(context, "test.json");
        if (!TextUtils.isEmpty(bannerConfig)) {
            try {
                JSONObject jsonObject = JSON.parseObject(bannerConfig);
                if (jsonObject.containsKey("intValue")) {
                    intValue = jsonObject.getIntValue("intValue");
                }
                if (jsonObject.containsKey("arr")) {
                    JSONObject jsonObject1 = jsonObject.getJSONObject("arr");
                    if (jsonObject1.containsKey("strX")) {
                        strX = jsonObject1.getString("strX");
                    }
                    if (jsonObject1.containsKey("strY")) {
                        strY = jsonObject1.getString("strY");
                    }
                }
            } catch (Throwable e) {
                e.printStackTrace();
            }
        }
    }
    
}
目录
相关文章
|
7天前
|
云安全 监控 安全
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1348 8
|
6天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
426 10
|
18天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
1233 43
|
18天前
|
人工智能 前端开发 算法
大厂CIO独家分享:AI如何重塑开发者未来十年
在 AI 时代,若你还在紧盯代码量、执着于全栈工程师的招聘,或者仅凭技术贡献率来评判价值,执着于业务提效的比例而忽略产研价值,你很可能已经被所谓的“常识”困住了脚步。
1081 86
大厂CIO独家分享:AI如何重塑开发者未来十年
|
14天前
|
存储 自然语言处理 测试技术
一行代码,让 Elasticsearch 集群瞬间雪崩——5000W 数据压测下的性能避坑全攻略
本文深入剖析 Elasticsearch 中模糊查询的三大陷阱及性能优化方案。通过5000 万级数据量下做了高压测试,用真实数据复刻事故现场,助力开发者规避“查询雪崩”,为您的业务保驾护航。
626 32