Android File.createTempFile 抛出 IOException

Android File.createTempFile throwing IOException

提问人:Sdr 提问时间:10/26/2023 最后编辑:SörenSdr 更新时间:10/27/2023 访问量:30

问:

一段时间以来一直在敲打我的头(~16 小时)。查找了互联网上到处搜索的 SO 帖子。也尝试用 createNewFile() api 替换,也没有用。对于它的一生,不知道是什么原因造成的。帮助赞赏。下面的代码片段,

fun createImgFile(context: Context): File? {
    return try {
        val fileTimeStamp: String = SimpleDateFormat("yyyy/MM/dd").format(Date())
        val fileName = "MyImg_$fileTimeStamp"
        File.createTempFile(fileName, null, context.cacheDir)
    } catch (exception: IOException) {
        exception.printStackTrace()
        null
    }
}

传递的上下文是来自可组合函数的 LocalContext.current。在运行 Android API 33 的 Pixel3a 模拟器上运行。

将 createTempFile() 替换为 file.createNewFile()。我注意到的一件事是,当简单地创建一个文件引用时(即只是在内存中,没有在磁盘上创建任何内容),事情就会起作用。

Android Kotlin 文件

评论


答:

1赞 Mohammad Fallah 10/26/2023 #1

在您的情况下,IO 异常是由于您提供的路径。 因为您提供的名称是包含斜杠,这意味着您正在一个不存在的目录中创建一个文件,所以要解决这个问题,您只需将日期的格式更改为另一个排除斜杠字符即可。

试试这个:

 val fileTimeStamp: String = SimpleDateFormat("yyyy-MM-dd").format(Date())
 val fileName = "MyImg_$fileTimeStamp"

评论

0赞 Sdr 10/26/2023
谢谢!现在,这是一个伟大的眼睛。衷心感谢。