Use Kotlin USE to shorten file reading
常规的文件读写如下;
private val pdfReader by lazy {val file = File(cacheDir, fileName)val outputStream = FileOutputStream(file)try {val inputStream = assets.open(fileName)var bytesCopied: Long = 0val buffer = ByteArray(8 * 1024)var bytes = ad(buffer)while (bytes >= 0) {outputStream.write(buffer, 0, bytes)bytesCopied += bytesbytes = ad(buffer)}} finally {outputStream.close()}PdfReader(file)
}
Kotlin1.2开始,提供一个 use扩展方法,可以用在 Closeable类中
上面代码可以精简成:
private val pdfReader by lazy {val file = File(cacheDir, fileName)val outputStream = FileOutputStream(file)outputStream.use { outputStream ->val inputStream = assets.open(fileName)var bytesCopied: Long = 0val buffer = ByteArray(8 * 1024)var bytes = ad(buffer)while (bytes >= 0) {outputStream.write(buffer, 0, bytes)bytesCopied += bytesbytes = ad(buffer)}}PdfReader(file)
}
上面的 流拷贝也会一个扩展。
private val pdfReader by lazy {val file = File(cacheDir, fileName)val outputStream = FileOutputStream(file)outputStream.use { fileOut ->assets.open(fileName).copyTo(fileOut)}PdfReader(file)
}
File 类 也有一个扩展函数 outputStream()
private val pdfReader by lazy {val file = File(cacheDir, fileName)file.outputStream().use { fileOut ->assets.open(fileName).copyTo(fileOut)}PdfReader(file)
}
WOW ,改造完成,12行代码,精简成3行。
InputStream 读取出 字符串 (Text,String)
val myString = inputStream.bufferedReader().use { bufferReader -> bufferReader?.readText()
}
本文发布于:2024-01-31 14:13:56,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170668163629108.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |