首页 > 解决方案 > 打开输入流时找不到文件异常

问题描述

我正在创建一个 kotlin 应用程序,它从设备的外部存储中读取音频文件。但是,当我尝试阅读它时,我得到了 fileNotFoundException。这是我的代码:

val file = File(newAudio!!)
val inputStream = context?.contentResolver?.openInputStream(Uri.fromFile(file))
val requestFile = RequestBody.create(MediaType.parse("audio/mpeg"), inputStream?.readBytes())

newAudio等于意图的路径 (URI)。为什么会这样?

编辑: 这是我获取 newAudio 并将其发送到 ViewModel 的方法:

  override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == 111 && resultCode == Activity.RESULT_OK && data != null) {
            fileData = data.data!!
            newAudioViewModel!!.sendNewAudio(fileData)
            navHostFragment.findNavController().navigate(R.id.newAudioInfoFragment)
        }
    }

然后我像这样从 ViewModel 得到它:

newAudioViewModel!!.getNewAudio().observe(viewLifecycleOwner, Observer<Uri?> { audio ->
    newAudio = audio?.path
})

标签: javaandroidkotlin

解决方案


推荐阅读