我正在尝试将从库中选择的文件复制到应用程序的私有目录,但我无法越过这一点。
首先,我的代码是这样的
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
权限。我现在没主意了