java.io.FileNotFoundException 打开失败:ENOENT(没有这样的文件或目录)

Ema*_*man 8 android kotlin android-fileprovider ucrop

我有一个临时文件,用于从裁剪库创建图像,我可以在设备文件资源管理器中看到该文件,但当我尝试打开该文件时,出现此错误:

java.io.FileNotFoundException:文件:/data/user/0/com.example.demo/cache/.tmp/cropped1651879842159823361.png:打开失败:ENOENT(没有这样的文件或目录)

该文件的创建方式如下:

val croppedImageFile = File.createTempFile("cropped", ".png", viewModel.tempPath)
val destinationUri = Uri.fromFile(croppedImageFile)
Run Code Online (Sandbox Code Playgroud)

viewModel.tempPath 如下:

viewModel.tempPath = "${this.cacheDir}/.tmp"
Run Code Online (Sandbox Code Playgroud)

我可以看到该文件已创建并且有效,但是当我尝试访问它时,它声称它不存在。我只是通过执行以下操作打开文件File(uri.toString())。在视图模型中

我不确定出了什么问题以及为什么找不到该文件。如果这很重要,我使用的是带有 google play 的模拟器,并且是 Android 11。

小智 2

您需要使用打开该文件new File(uri.getPath())

uri.toString()以字符串形式返回 URI,这意味着“file://path/to/file”不是有效路径。