美文网首页Android进阶之路Android技术知识
读取assets/raw目录下文件帮助类

读取assets/raw目录下文件帮助类

作者: 孔鹏飞 | 来源:发表于2021-03-23 10:56 被阅读0次

在项目中我们常常会把一些配置文件放在src/main/assets或src/main/res/raw目录下,然后在程序运行的时候读取出来使用,随手就写了一个读取assets/raw目录下文件的帮助类,代码比较简单,如下:

import android.content.Context
import androidx.annotation.RawRes
import com.google.gson.reflect.TypeToken
import java.io.*

object AssetHelper {

    /**
     * 读取src/main/assets目录下json文件,转换成对应的bean
     */
    inline fun <reified T> readJsonFromAssets(context: Context, fileName: String): T {
        val inputStream = context.assets.open(fileName)
        val json = String(inputStream.readBytes())
        inputStream.close()
        return GsonHelper.fromJson(json, T::class.java) as T
    }

    /**
     * 读取src/main/assets目录下json文件,转换成对应的List
     */
    inline fun <reified T> readJsonArrayFromAssets(context: Context, fileName: String): T {
        val inputStream = context.assets.open(fileName)
        val json = String(inputStream.readBytes())
        inputStream.close()
        return GsonHelper.fromJson(json, object : TypeToken<T>() {}.type) as T
    }

    /**
     * 读取src/main/res/raw目录下json文件,转换成对应的bean
     */
    inline fun <reified T> readJsonFromRaw(context: Context, @RawRes id: Int): T {
        val inputStream = context.resources.openRawResource(id)
        val json = String(inputStream.readBytes())
        inputStream.close()
        return GsonHelper.fromJson(json, T::class.java) as T
    }

    /**
     * 读取src/main/res/raw目录下json文件,转换成对应的List
     */
    inline fun <reified T> readJsonArrayFromRaw(context: Context, @RawRes id: Int): T {
        val inputStream = context.resources.openRawResource(id)
        val json = String(inputStream.readBytes())
        inputStream.close()
        return GsonHelper.fromJson(json, object : TypeToken<T>() {}.type) as T
    }
}

对应的GsonHelper类为

object GsonHelper {

    private val gson = Gson()

    fun <T> fromJson(json: String?, clazz: Class<T>): T? {
        try {
            return gson.fromJson(json, clazz)
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return null
    }

     fun <T> fromJson(json: String?,type: Type):T= gson.fromJson(json, type)
}

相关文章

网友评论

    本文标题:读取assets/raw目录下文件帮助类

    本文链接:https://www.haomeiwen.com/subject/upoxhltx.html