当前位置: 首页 > 知识库问答 >
问题:

FileNotFoundException-无法使用文件室实例导入json

龙佐
2023-03-14

我试图用原始文件夹中的一个简单JSON填充我的房间数据库,这是我的代码

fun getInstance(context: Context): CarDatabase {
    if(instance == null) {
        instance =  Room.databaseBuilder (
            context,
            CarDatabase::class.java, "cars_table"
        ).createFromAsset("app/res/raw/cars_sample.json").build()
    }
    return instance as CarDatabase
}

我明白了

原因:java。伊奥。FileNotFoundException:app/res/raw/cars\u示例。json

共有2个答案

邹斌
2023-03-14

由于Android Studio使用了新的基于Gradle的构建系统,所以应该将assets/放在源代码集中(例如src/main/assets/)。

在一个典型的Android Studio项目中,你会有一个app/module和一个main/sourceset(app/src/main/off在项目根目录下),因此你的主要资产会放在app/src/main/assets/中。然而:

如果您需要特定于构建类型的资产,例如调试与发布,您可以为这些角色创建源集(例如。app/src/发布/资产/)

您的产品风格也可以包含带有资产的源集(例如,app/src/googleplay/资产/)

您的instrumentation测试可以有一个带有自定义资产(例如app/src/androidTest/assets/)的androidTest源集,但一定要让InstrumentationRegistry获取getContext(),而不是getTargetContext(),以访问这些资产

此外,快速提醒:资产在运行时是只读的。使用内部存储、外部存储或存储访问框架来读取/写入内容。

原始文件夹必须位于res文件夹内,否则无法工作。

要创建原始文件夹,请执行以下操作:

  1. 右键单击res文件夹
  2. 选择新的
  3. 选择Android资源目录
  4. 将目录命名为raw
  5. 在“资源类型”部分中,添加raw
  6. 点击ok
鄢选
2023-03-14

除非你的模块有src/main/assets/app/res/raw/cars\u sample。json,这不是您的json的资产中的有效路径。而且,由于Android找不到那个JSON,我猜你的模块没有那个资源。

从您正在使用的外观来看,我猜您是在尝试从原始资源填充数据库。原始资源类似于资产,但它们不是资产。

您需要为模块创建一个assets/目录,并将JSON移到那里。

 类似资料:
  • 我想使用房间数据库,但在构建应用程序时出现以下错误: 执行组织时出错。喷气式飞机。科特林。格拉德尔。内部的KaptExecution公司 和一些这样的错误: 错误:不确定如何将游标转换为此方法的返回类型(java.util.ArrayList 我将数据库与这些类一起使用: 书签实体: 书签数据库: 书签DAO: 我为房间添加此依赖项: 并在构建顶部添加应用插件:“kotlin kapt”。grad

  • 本文向大家介绍ASP.NET Core 导入导出Excel xlsx 文件实例,包括了ASP.NET Core 导入导出Excel xlsx 文件实例的使用技巧和注意事项,需要的朋友参考一下 ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Linux和

  • 我正在使用openpyxl导入/导出xlsx文件。 但是我不能导入我用openpyxl导出的文件。 我必须在Excel中打开导出的xlsx文件,更改导入的xlsx文件的一些值并保存它(它的大小也会改变(例如:从148 Ko到180 Ko)。然后我可以用openpyxl导入它。 我认为,有一个问题,在出口,因为后保存手动导入作品。 谢谢

  • 我已经挣扎了好几天了,因为我无法用业力进行任何真正的测试。我可以运行不需要导入的测试(如基本健全性测试),但一旦我必须从我的应用程序导入某些内容,我就会收到错误: 系统src。js:1085获取http://localhost:9876/base/dist/components/test.service404(未找到)fetchTextFromURL@system。src。js:1085(匿名函数

  • 我一直在遵循gRPC教程,这非常好。当我尝试将https://github.com/grpc-ecosystem/grpc-gateway添加到我的项目时,问题就开始了。我使用他们给你的命令: 我在我的原型中导入包: 我在上面的“文件未找到”行收到错误。当我复制项目中的文件时,它们会被找到,但当我运行命令时 它会抱怨找不到文件。 有人能告诉我如何使grpc网关正常工作的正确方法吗? 我目前使用Go

  • Mac OS High Serial 10.13.6 版本:2018-09 (4.9.0) 嗨,我在用Eclipse创建JUnit测试用例时遇到了麻烦。我已经谷歌了这个错误,但是所有的帖子都告诉我你必须添加。如下所示,我有。 错误是, 有人知道我有什么问题吗?