44. Kotlin通过java的包实现文件IO读取

Kotlin 读取文件,可以很简单。比如,在读取一些小文件的时候,可以这样写

/** 直接一行一行的读取文件全部内容
  @Author: Jian Junbo
  @Date: 2017/12/8 14:14
  @Param:
 */
fun myIO1(){
    val file = File("build.gradle")
//    println(file.readLines())     //一行输出
    file.readLines().forEach(::println)     //逐行输出
}

可以运行比较一下,直接 readLines() 和 forEach() 输出的差别。
当然,想再简单点也不是没有办法。

/** 全文本直接读取文件
  @Author: Jian Junbo
  @Date: 2017/12/8 14:28
  @Param:
 */
fun myIO2(){
    val file = File("build.gradle")
    println(file.readText())
}

如果是中规中矩的写法,就是读较大的文件也是没有问题的。

/** 逐行读取逐行输出的读取方式
  @Author: Jian Junbo
  @Date: 2017/12/8 14:28
  @Param:
 */
fun myIO3(){
    val file = File("build.gradle")
    val bufferedReader = BufferedReader(FileReader(file))
    var line:String
    while (true){
        line = bufferedReader.readLine()?:break
        println(line)
    }
    bufferedReader.close()
}

这里经常会忘记 close(),所以要注意这一点。
也有省事儿的办法,完全不用去考虑 close() ,因为有 use 这个方法。它已经帮你做了这些。

/** 使用use,不用考虑close的逐行读取逐行输出的读取方式
  @Author: Jian Junbo
  @Date: 2017/12/8 14:28
  @Param:
 */
fun myIO4(){
    val file = File("build.gradle")
    BufferedReader(FileReader(file)).use {
        var line: String
        while (true){
            line = it.readLine()?:break
            println(line)
        }
    }
}

你可能感兴趣的:(44. Kotlin通过java的包实现文件IO读取)