简介
在kotlin中对IO的操作有别于java,完全用java的IO方式写kotlin代码是不可取得,下面是项目中实践出来的。
InputStream
使用InputStream方式如下:
val inputStream:InputStream = File("kotlin.txt").inputStream()
val inputString=inputStream.bufferedReader().use{ it.readText() }
步骤:
首先通过File对象获取InputStream实例,通过inputStream获取bufferedReader,最后通过bufferedReader.use高级函数读取文件内容,并返回String
如果需要逐行读取,则需要以下方式:
val inputStream:InputStream=File("kotlin.txt").inputStream()
val lineList=mutableListOf()
inputStream.bufferedReader().useLines{ lines -> lines.forEach{ lineList.add }}
步骤:
逐行读取只需要调用bufferedReader.useLines函数即可,lines就是每一行数据的集合
BufferedReader
使用BufferedReader的方式如下:
val bufferedReader:BufferedReader=File("kotlin.txt").bufferedReader()
val inputString=bufferedReader.use{it.readText()}
描述:
相信你看到了,File对象可以直接获取bufferedReader,先获取inputStream显得多余,如果你目标是bufferedReader建议这么写
但这些还不是终点,因为File还可以直接useLines,请看
File("kotlin.txt").useLines{ lines -> lines.forEach{ lineList.add(it) } }
就是这么简单好用,赞 ,说完读,下面说写
PrintWriter
使用PrintWriter方式:
File("kotlin.txt").printWriter().use{ out-> out.println( "writer something" ) }
步骤:
通过File对象获取printWriter,然后直接调用use高级函数,最后println函数写入字符串
BufferedWriter
使用BufferedWriter方式:
File("kotlin.txt").bufferedWriter().use{ out-> out.write( "writer something" ) }
步骤:
不用多说了,你已经会用了吧。
但是,这又不是终点,还有更简便的写法,这都依赖于kotlin的高级语法糖:扩展函数,下面请看:
val file = File("kotlin.txt")
file.writeText("something")
file.appendText("\nAny.")
file.appendText("\nOther.")
请注意: 你肯定会问,为啥不一步到位,封装那些多余的printWriter,和bufferedWriter干嘛,下面告诉你:
1. printWriter 在接收参数为null的情况下,会直接写入null
2. bufferedWriter 在接收参数为null的情况 会抛出空指针
3. file.writeText 函数只接收String 非Null 参数,如果你传入null 代码都编译不了
总结
相信你会用了,会用还不是目地,还是要看看源码,根本就是扩展函数的应用。希望这些对你有用,谢谢。
网友评论