当前位置:网站首页>Kotlin中IO流
Kotlin中IO流
2022-08-08 20:26:00 【不忘初衷z】
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文件
边栏推荐
猜你喜欢
差点被ECCV错过的论文:视频理解新框架,仅用微调的「成本」,达到预训练的「全能」...
Yarn 总结(未完待续)
Ansible自动化运维工具(二)playbook剧本
IJCAI 2022 | Can Graph Neural Networks Detect Anomalies?
学习笔记:第二部分 队列
fillder4不间断提示the system proxy was change,看我解决
分布式链路追踪Jaeger + 微服务Pig在Rainbond上的实践分享
文档管理系统对于企业来说有哪些作用?
Maykel Studio OpenHarmony Device Development Training Notes - Chapter 6 Study Notes
Mei cole studio OpenHarmony equipment development training notes - the first learn notes
随机推荐
Kotlin反射
给大龄准备转行网络工程师的朋友一些建议
实践篇1:深度学习之----LetNet之tensorflow2的实现
1259 Alice and Bob
梅科尔工作室OpenHarmony设备开发培训笔记-第六章学习笔记
第四讲 SVN
超人飞来!Flutter 实现满屏的力量感动画!
What are the role of document management system for companies?
NAACL2022 NER SOTA—RICON学习笔记
方舟综合指令代码大全系统综合
随手记:laravel、updateOrCreate 和 updateOrInsert 的区别
nacos作用
NAACL2022 NER SOTA - RICON study notes
场外基金开户在手机办理安全吗?
Kotlin实用的一些框架
兼容并蓄广纳百川,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang复合容器类型的声明和使用EP04
uni-app微信小程序如何渲染markdown
openEuler 资源利用率提升之道02:典型应用下的效果
分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03
PHP使用glob()查找文件