首页 > 解决方案 > 如何解决错误:java.io.FileNotFoundException

问题描述

在我的应用程序中,我有以下代码:

object FaceDetection {

    private val faceModel = "haarcascade_frontalface_default.xml"

    private lateinit var faceCascade: CascadeClassifier

    fun loadModel(activity: Activity) {
        faceCascade = CascadeClassifier(File(activity.filesDir, "das").apply { writeBytes(activity.assets.open(faceModel).readBytes()) }.path)
    }
}

上面提到的错误是失败的,我从xml文件中保存了 2 个副本,一个在xml文件夹中,一个在main/java文件夹中,但是它们都没有工作,我应该把这个文件放在哪里,如果有问题如何调用它在我上面的电话中?

在此处输入图像描述 更新

我尝试将其解决为:

    private fun loadModel(activity: Activity) {
        var res = activity.resources
        faceModel = res.getXml(R.xml.haarcascade_frontalface_default).text
        faceCascade = CascadeClassifier(File(activity.filesDir, "das").apply {
            writeBytes(activity.assets.open(faceModel).readBytes())
        }.path)
    }

但出现错误:

res.getXml(R.xml.haarcas…frontalface_default).text must not be null

标签: android

解决方案


assets解决方案是在文件夹下创建文件main夹,并将文件移动到其中,然后我可以将其读取为:

object FaceDetection {

    private val faceModel = "haarcascade_frontalface_default.xml"

    private lateinit var faceCascade: CascadeClassifier

    fun loadModel(activity: Activity) {
        faceCascade = CascadeClassifier(File(activity.filesDir, "das").apply { writeBytes(activity.assets.open(faceModel).readBytes()) }.path)
    }
}

推荐阅读