io - 难以将下载的 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。我真的不确定为什么文件没有写入设备。
解决方案
也许有更简单的方法(效率也较低,但不用担心小文件,它已经非常快了):
File(filesDir, "Test.pdf").writeBytes(URL("your url").readBytes())
writeBytes
并且readBytes
是 Kotlin 标准库扩展函数。
推荐阅读
- c# - 在 .NET C# 中忽略 64 位程序集中的 32 位第三方 dll 错误
- ios - 如何通过使用 Ionic1 在 iPhone/iPad 上点击下一个键进入下一个输入?
- mysql - 从现在到一周 MYSQL 从客户那里获得生日
- sql-server - 由于 SQL Server 嵌套循环运算符中的基数估计错误导致的性能问题
- sapui5 - 上传多个员工的集合
- laravel - 如何将查询构建器代码转换为 Eloquent?
- php - 使用会话进行基于角色的身份验证
- cassandra - 如何在cassandra中使用非主键删除一行
- regex - 正则表达式仅匹配单词之间的空格
- cassandra - 在一个查询中更新多个计数器