Kotlin中IO流

Kotlin文件中的IO流

这两天没有写博客,可能是因为比较懒吧,不太想学习了,因为觉得真的好累,学了后面忘记前面,搞的自己没自信了,今天学习了IO流,把学到的内容来总结一下

Kotlin的IO流几乎和JAVA是一模一样的,但是Kotlin对这些方法和类做了一些扩展,让我们非常的方便的去读写内容,具体可看下面代码

fun main(args: Array) {
FileInputStream("./Text/IMG_0894.JPG").use { fis ->
FileOutputStream("./Text/root/src.JPG").use { fos->
//创建缓冲区输入流
val bis = fis.buffered()
//创建缓冲区输出流
val bos = fos.buffered()
//复制到输出流
bis.copyTo(bos)
println(“复制完成”)
}
}
}

上述代码是一个字节输入和输出流,实现了一个文件的复制,非常的简单.其中使用了buffered()这方法,就是kotlin扩展的
文件的复制是使用了扩展方法 CopyTo()方法.
注意:上述的use.{ fis ->} 是一种自动资源管理,能够在使用完这些流方法时自动关闭,免除我们手动关闭.非常的方便

接下来介绍一下字符输入和输出流,其实和上述的字节是差不多的,主要是几点需要特别注意

fun main(args: Array) {
FileReader("./Text/IMG_0894.text").use { fis ->
FileWriter("./Text/root/src.text").use { fos->
//创建缓冲区输入流
val bis = fis.buffered()
//创建缓冲区输出流
val bos = fos.buffered()
//复制到输出流
bis.copyTo(bos) //这个命令复制完后自动关闭流文件
println(“复制完成”)
val str = bis.readText() // 这个方法是复制文本内容到一个字符串变量中,特别注意的是这个文件读取成功后会自动关闭流文件
val list = bis.readLines //这个方法是读取文件内容到集合中,每一行是一个数据.读取完毕后自己关闭流文件
}
}
}

特别注意的问题就是流关闭问题,建议不要混合使用,不然会抛出异常!!

接下来我就要讲一个特别厉害的Kotlin中的File扩展了

上述代码如果初学者还是觉得麻烦的话,那你肯定喜欢的喜欢的就是kotlin对file的扩展了,具体看File方法

File.readBytes() 返回值是ByteArray 读取文件的全部内容到一个字节数组中>
File.readText(charset:Charset = Charset.UTF-8) 读取一个文本文件,并且把内容全部赋值给一个String的变量中,所以文件只能是文本文件.Charset是指定字符集,默认是UTF-8
fun File.writBytes(array:ByteArray)写入字节数组到文件中,和上面的第一个方法是对应的
fun File.writeText(String text,charset) 写入字符串到文件中,和上面第二个方法是对应的
这些对文件的读取和复制是不是更加的简单了??
接下介绍一个复制文件的操作
就是使用CopyTo方法,上述我已经讲述过了,具体看代码
fun File.copyTo(target:文件.overwrite=false:是否覆盖文件,默认是false,bufferSize:int:缓冲区大小,使用默认的即可,这个方法返回值是一个File文件

猜你喜欢

转载自blog.csdn.net/weixin_44761758/article/details/89465977