【问题标题】:Reading file in assets folder in Kotlin在 Kotlin 的资产文件夹中读取文件
【发布时间】:2021-12-11 06:54:00
【问题描述】:

我有一个二维对象数组,存储在 Android Studio 项目的 Assets 文件夹中的一个文件中。该文件被序列化并命名为“maindata.conv”

用 Java 读取文件是一件轻而易举的事:

static public Object[][]  mainTable = null;

ObjectInputStream instream = new ObjectInputStream(getAssets().open("maindata.Conv"));

mainTable = (Object[][]) instream.readObject();

但是当我将代码翻译成Kotlin时,翻译后的代码不起作用:

val instream = ObjectInputStream(assets.open("maindata.Conv"))

MainActivity.mainTable = instream.readObject() as Array<Array<Any?>?>

“开放”一词被标记为“未解决”。我没有尝试导入作品。如何从 Assets 文件夹中读取 Kotlin 中的原始文件?请帮忙。

【问题讨论】:

  • 尝试使用 assets. `open` 而不是 assets.open,因为 open 是 Kotlin 关键字。
  • 在 Kotlin 中 assets 只是 getAssets() 的简写,它是 Context 上的一个方法 - 所以如果你在 Activity 中调用它,它就可以工作。 Java 代码是相同的,所以您必须从 Kotlin 版本中的不同位置调用它?

标签: android kotlin assets


【解决方案1】:

谢谢,但我找到了问题的根源。我试图从 Java 项目中执行 Kotlin 代码。当我创建一个 Kotlin 项目时,代码运行良好。我的猜测是它可能与活动的上下文有关,但我不是 100% 确定。

【讨论】:

  • 您可以在同一个项目中混合和匹配 Kotlin 和 Java - 您只是没有在 Context 上调用 assets(例如,在活动实例中)。如果您得到红色下划线,那是因为 assets 在您的范围内的任何 this 上都不是公认的属性
  • 正确!谢谢!我还在了解 Kotlin。
猜你喜欢
  • 2018-04-22
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
  • 2012-12-26
  • 2018-01-19
  • 2012-03-01
  • 2020-03-03
相关资源
最近更新 更多