java - 打开输入流时找不到文件异常
问题描述
我正在创建一个 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
})
解决方案
推荐阅读
- linux - 在 linux bash 中删除文件的简单脚本
- php - 将子查询结果集限制为最后一条记录
- kubernetes - kubectl 运行命令中记录选项的用途是什么?
- haskell - Haskell DeriveGeneric pragma 未被识别
- oracle - ORA-04091: 表 JOSEP.EMP 正在变异,触发器/函数可能看不到它
- excel - 显示按钮被选择次数的逻辑
- java - 递归填充二叉搜索树的高度?
- haskell - 在 GHC 中-为什么这个小程序的惰性版本比基于循环的变体快得多?
- scala - 如何解决 Eclipse 2019 中的 Scala 错误?
- reactjs - 使用 ReactJS Fullpage 如何使用图像的 onclick 转到部分