簡(jiǎn)介
? ? ? ? 在kotlin中對(duì)IO的操作有別于java躺酒,完全用java的IO方式寫kotlin代碼是不可取得块攒,下面是項(xiàng)目中實(shí)踐出來(lái)的兵迅。
InputStream
使用InputStream方式如下:
val inputStream:InputStream = File("kotlin.txt").inputStream()
val inputString=inputStream.bufferedReader().use{ it.readText() }
步驟:
? ? ? ? 首先通過(guò)File對(duì)象獲取InputStream實(shí)例,通過(guò)inputStream獲取bufferedReader甜紫,最后通過(guò)bufferedReader.use高級(jí)函數(shù)讀取文件內(nèi)容,并返回String
如果需要逐行讀取骂远,則需要以下方式:
val inputStream:InputStream=File("kotlin.txt").inputStream()
val lineList=mutableListOf()
inputStream.bufferedReader().useLines{ lines -> lines.forEach{ lineList.add }}
步驟:
? ? ? ? ? 逐行讀取只需要調(diào)用bufferedReader.useLines函數(shù)即可棵介,lines就是每一行數(shù)據(jù)的集合
BufferedReader
使用BufferedReader的方式如下:
val bufferedReader:BufferedReader=File("kotlin.txt").bufferedReader()
val inputString=bufferedReader.use{it.readText()}
描述:
? ? ? ? ? 相信你看到了,F(xiàn)ile對(duì)象可以直接獲取bufferedReader吧史,先獲取inputStream顯得多余邮辽,如果你目標(biāo)是bufferedReader建議這么寫
但這些還不是終點(diǎn),因?yàn)镕ile還可以直接useLines贸营,請(qǐng)看
File("kotlin.txt").useLines{ lines -> lines.forEach{ lineList.add(it) } }
就是這么簡(jiǎn)單好用吨述,贊 ,說(shuō)完讀钞脂,下面說(shuō)寫
PrintWriter
使用PrintWriter方式:
File("kotlin.txt").printWriter().use{ out-> out.println( "writer something" ) }
步驟:
? ? ? ? ? 通過(guò)File對(duì)象獲取printWriter揣云,然后直接調(diào)用use高級(jí)函數(shù),最后println函數(shù)寫入字符串
BufferedWriter
使用BufferedWriter方式:
File("kotlin.txt").bufferedWriter().use{ out-> out.write( "writer something" ) }
步驟:
? ? ? ? ? 不用多說(shuō)了冰啃,你已經(jīng)會(huì)用了吧邓夕。
但是,這又不是終點(diǎn)阎毅,還有更簡(jiǎn)便的寫法焚刚,這都依賴于kotlin的高級(jí)語(yǔ)法糖:擴(kuò)展函數(shù),下面請(qǐng)看:
val file = File("kotlin.txt")
file.writeText("something")
file.appendText("\nAny.")
file.appendText("\nOther.")
請(qǐng)注意: 你肯定會(huì)問(wèn)扇调,為啥不一步到位矿咕,封裝那些多余的printWriter,和bufferedWriter干嘛狼钮,下面告訴你:
1. printWriter 在接收參數(shù)為null的情況下碳柱,會(huì)直接寫入null
2. bufferedWriter 在接收參數(shù)為null的情況 會(huì)拋出空指針
3. file.writeText 函數(shù)只接收String 非Null 參數(shù),如果你傳入null 代碼都編譯不了
總結(jié)
? ? ? ? 相信你會(huì)用了熬芜,會(huì)用還不是目地莲镣,還是要看看源碼,根本就是擴(kuò)展函數(shù)的應(yīng)用涎拉。希望這些對(duì)你有用瑞侮,謝謝。