首页 > 解决方案 > 难以将下载的 pdf 文件写入 android 设备

问题描述

我正在使用 okhttp 从 Web 服务器下载 pdf 文件。该文件似乎可以正确下载,并创建文件“Test.pdf”。文件大小在 Android Studio 的设备文件资源管理器中列为 0。

这是我的回调代码:

client.newCall(request).enqueue(object : Callback {

    override fun onFailure(call: Call, e: IOException) {
                    println("Failed")
                }

    override fun onResponse(call: Call, response: Response) {

                    println("Success!")

                    val file = File(filesDir, "Test.pdf")
                    println(response.body()!!.bytes().size)

                    file.outputStream().write(response.body()!!.bytes())
                    file.outputStream().flush()
                    file.outputStream().close()
                }
            })

println 语句显示正确的文件大小为 6MB。我真的不确定为什么文件没有写入设备。

标签: iokotlinokhttpandroid-file

解决方案


也许有更简单的方法(效率也较低,但不用担心小文件,它已经非常快了):

File(filesDir, "Test.pdf").writeBytes(URL("your url").readBytes())

writeBytes并且readBytes是 Kotlin 标准库扩展函数。


推荐阅读