通过设备管理对象获取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月前
|
存储 Shell
调用资产assist中的文件出现的问题
调用资产assist中的文件出现的问题
28 0
|
测试技术 Python
一日一技:导入父文件夹中的模块并读取当前文件夹内的资源
一日一技:导入父文件夹中的模块并读取当前文件夹内的资源
125 0
|
缓存 Java API
第04篇:Resources资源文件处理
Java 的java.net.URL各种 URL 前缀的标准类和标准处理程序不足以满足所有对低级资源的访问。例如,没有URL可用于访问需要从类路径或相对于ServletContext。于是乎这就给了Spring,封装继承多态,大展身手的展示了。怎么展示呢?
307 0
|
Python
跨文件夹调用自定义模块
跨文件夹调用自定义模块
78 0
|
弹性计算 分布式计算 安全
通过服务目录创建云资源
服务目录是阿里云的一款产品,用于帮助企业客户搭建自定义的服务目录,快速实现云资源的供给。
400 0
|
Java Shell Android开发
Android插件化开发之用DexClassLoader加载未安装的APK资源文件来实现app切换背景皮肤(1)
Android插件化开发之用DexClassLoader加载未安装的APK资源文件来实现app切换背景皮肤(1)
584 0
Android插件化开发之用DexClassLoader加载未安装的APK资源文件来实现app切换背景皮肤(1)
|
缓存 机器人 Android开发
Android插件化开发之用DexClassLoader加载未安装的APK资源文件来实现app切换背景皮肤(2)
Android插件化开发之用DexClassLoader加载未安装的APK资源文件来实现app切换背景皮肤(2)
177 0
Android插件化开发之用DexClassLoader加载未安装的APK资源文件来实现app切换背景皮肤(2)
从加载DLL的中获取放置于Resources文件夹中资源字典的几种方法
原文:从加载DLL的中获取放置于Resources文件夹中资源字典的几种方法 主程序 为 Main_Test.exe 被加载的DLL 为 Load_Test.dll  此DLL 中 有一个 文件夹Resources文件夹有一个资源字典Graphics.
1333 0
|
图形学 UED
Unity打包/读取AssetBundle资源全教程
Unity 资源AssetBundle打包 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) Chi...
2213 0