OutpuStream 在 Android 应用程序中给出错误 ENOTDIR

问题描述 投票:0回答:0

我正在尝试将从库中选择的文件复制到应用程序的私有目录,但我无法越过这一点。

首先,我的代码是这样的

private fun copyImage(context: Context, uri: Uri) {
    val fileName = getFileName(context, uri)
    val appPath = applicationInfo.dataDir

    if (uri.path != null) {
        if (uri.scheme == "content") {
            val imagesFolder = File("$appPath/images")
            if (!imagesFolder.exists()) {
                imagesFolder.mkdirs()
            }

            val inputStream = contentResolver.openInputStream(uri)
            val imageFile = File("$appPath/images/$fileName")

            inputStream.use { input ->
                imageFile.outputStream().use { output ->
                    input!!.copyTo(output)
                }
            }
            inputStream?.close()
        }
    }
}

文件被选中,我得到一个有效的 URI,但我在这一行收到错误

imageFile.outputStream().use { output ->

上面写着这样的话

java.io.FileNotFoundException: /data/user/0/com.my.app/images/1000006043.jpg: open failed: ENOTDIR (Not a directory)
at libcore.io.IoBridge.open(IoBridge.java:574)
at java.io.FileOutputStream.<init>(FileOutputStream.java:236)
at java.io.FileOutputStream.<init>(FileOutputStream.java:186)
at com.my.app.AddImageActivity.copyImage(AddImageActivity.kt:99)

我也试过

imageFile.createNewFile()
但我得到了类似的错误。我在清单文件中添加了
android.permission.READ_MEDIA_IMAGES
权限。我现在没主意了

android kotlin mediastore fileoutputstream filepicker
© www.soinside.com 2019 - 2024. All rights reserved.