Kotlin-找不到文件例外:虽然文件确实存在
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin-找不到文件例外:虽然文件确实存在相关的知识,希望对你有一定的参考价值。
尝试将XML文件解析到我的Kotlin应用程序时遇到以下问题:
java.io.FileNotFoundException: /src/main/res/locations.xml: open failed: ENOENT (No such file or directory)
下面是负责处理文件加载的代码:
fun parseToObject()
val thread = Thread(Runnable
try
val xml = File("src/main/res/locations.xml")
val doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xml)
println("Root Node: " + doc.documentElement.nodeName)
catch (e: Exception)
print(e.message)
)
thread.start()
有人知道我可能做错了吗?我尝试使用完整路径以及较短路径,但似乎不喜欢其中任何一个。
答案
除非您在res
中,否则它们在运行时不能作为文件访问res/raw/
目录中的项目文件。由于优化,它们甚至可能不存在于已安装的应用程序中。
您可以将文件放在main/res/raw/
或main/assets/
中。您可以将资产作为InputStream(而不是直接作为File)获得。
使用原始资源:
val doc = Resources.openRawResource(R.raw.locations).use xmlInputStream ->
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlInputStream)
println("Root Node: " + doc.documentElement.nodeName)
使用资产:
val doc = context.assets.open("locations.xml").use xmlInputStream ->
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlInputStream)
println("Root Node: " + doc.documentElement.nodeName)
原始资源与资产的优缺点:
原始资源具有ID,并且可以由其他资源XML文件引用。资产只能通过String文件名查找来访问,但是可以将它们组织到assets
中的子目录中。
以上是关于Kotlin-找不到文件例外:虽然文件确实存在的主要内容,如果未能解决你的问题,请参考以下文章
例外:无法加载文件或程序集 XXXX 或其依赖项之一。该系统找不到指定的文件