Kotlin之IO操作實(shí)踐

簡(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ì)你有用瑞侮,謝謝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末曼库,一起剝皮案震驚了整個(gè)濱河市区岗,隨后出現(xiàn)的幾起案子略板,更是在濱河造成了極大的恐慌毁枯,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叮称,死亡現(xiàn)場(chǎng)離奇詭異种玛,居然都是意外死亡藐鹤,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門赂韵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)娱节,“玉大人,你說(shuō)我怎么就攤上這事祭示∫蘼” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵质涛,是天一觀的道長(zhǎng)稠歉。 經(jīng)常有香客問(wèn)我,道長(zhǎng)汇陆,這世上最難降的妖魔是什么怒炸? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮毡代,結(jié)果婚禮上阅羹,老公的妹妹穿的比我還像新娘。我一直安慰自己教寂,他們只是感情好捏鱼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著酪耕,像睡著了一般穷躁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上因妇,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天问潭,我揣著相機(jī)與錄音,去河邊找鬼婚被。 笑死狡忙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的址芯。 我是一名探鬼主播灾茁,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼谷炸!你這毒婦竟也來(lái)了北专?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤旬陡,失蹤者是張志新(化名)和其女友劉穎拓颓,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體描孟,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驶睦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年砰左,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片场航。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缠导,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出溉痢,到底是詐尸還是另有隱情僻造,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布孩饼,位于F島的核電站嫡意,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏捣辆。R本人自食惡果不足惜蔬螟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汽畴。 院中可真熱鬧旧巾,春花似錦、人聲如沸忍些。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)罢坝。三九已至廓握,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嘁酿,已是汗流浹背隙券。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闹司,地道東北人娱仔。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像游桩,于是被迫代替她去往敵國(guó)和親牲迫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法借卧,類相關(guān)的語(yǔ)法盹憎,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法铐刘,異常的語(yǔ)法陪每,線程的語(yǔ)...
    子非魚_t_閱讀 31,625評(píng)論 18 399
  • 一、IO流整體結(jié)構(gòu)圖 流是一組有順序的,有起點(diǎn)和終點(diǎn)的字節(jié)集合奶稠,是對(duì)數(shù)據(jù)傳輸?shù)目偡Q或抽象。即數(shù)據(jù)在兩設(shè)備間的傳輸稱...
    慕凌峰閱讀 1,158評(píng)論 0 12
  • 概述: 1捡遍、IO流:即Input Output的縮寫锌订。 2、特點(diǎn):1)IO流用來(lái)處理設(shè)備間的數(shù)據(jù)傳輸画株。2)Java...
    玉圣閱讀 1,251評(píng)論 0 3
  • 前言 人生苦多辆飘,快來(lái) Kotlin ,快速學(xué)習(xí)Kotlin谓传! 什么是Kotlin蜈项? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,202評(píng)論 9 118
  • 標(biāo)準(zhǔn)輸入輸出,文件的操作续挟,網(wǎng)絡(luò)上的數(shù)據(jù)流紧卒,字符串流,對(duì)象流诗祸,zip文件流等等跑芳,java中將輸入輸出抽象稱為流,就好...
    navy_legend閱讀 713評(píng)論 0 0