Kotlin - 實(shí)現(xiàn)流寫入到File

轉(zhuǎn)自: Kotlin 中實(shí)現(xiàn)流的讀取的方法
http://www.reibang.com/p/31ce8caefa25


我們知道java中IO操作是一份很重要的知識(shí)點(diǎn)脖含,運(yùn)用IO知識(shí)可以完成許多使用的操作岸霹,在Java中谭梗,提供了許多方法來進(jìn)行流的讀寫操作,但是Kotlin 中呢卡骂?要怎么寫呢?恰巧今天寫Kotlin頁面的時(shí)候遇到了,在Java 中很普通甚至普遍的寫法宰翅,在Kotlin 中居然一直是報(bào)錯(cuò)的狀態(tài):

FileOutputStream fos = new FileOutputStream(file);
           BufferedInputStream bis = new BufferedInputStream(is);
           byte[] buffer = new byte[1024];
           int len;
           int total = 0;
           while ((len = bis.read(buffer)) != -1) {
               fos.write(buffer, 0, len);
               total = total + len;
               //獲取當(dāng)前下載量
               pd.setProgress((total / 1024));
           }
           fos.close();
           bis.close();
           is.close();
           return file;

其中 while ((len = bis.read(buffer)) != -1) {}在java 中的寫法是非常普遍的,但是到了Kotlin 中呢爽室?
就是這個(gè)樣子:

 val fos = FileOutputStream(file)
        val bis = BufferedInputStream(`is`)
        val buffer = ByteArray(1024)
        val len: Int
        var total = 0
        while ((len = bis.read(buffer)) != -1) {
            fos.write(buffer, 0, len)
            total = total + len
            //獲取當(dāng)前下載量
            pd.progress = total / 1024
        }
        fos.close()
        bis.close()
        `is`.close()
        return file

其中while ((len = bis.read(buffer)) != -1)會(huì)瘋狂提示錯(cuò)誤! 意思是說參數(shù)是不被允許的,what汁讼?怎么會(huì)這樣呢,百度了一下阔墩,原來Kotlin 中等式不是一個(gè)表達(dá)式嘿架,這種寫法是不被允許的,所有只有選擇其他方法了,后來發(fā)現(xiàn)了Kotlin中的also擴(kuò)展函數(shù)對(duì)啸箫,就是這貨耸彪,用這貨寫就可以了:

            while (((bis.read(buffer)).also { len = it }) != -1) {
                fos.write(buffer, 0, len)
                total += len
                //獲取當(dāng)前下載量
                pd.progress = total / 1024
            }
            fos.close()

所以現(xiàn)在這種就是很好的寫法了,運(yùn)行起來跟java中的效果是一樣的忘苛。
最后搜囱,沒事多學(xué)習(xí),有空多掙錢柑土,新的一年蜀肘,大家繼續(xù)努力

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市稽屏,隨后出現(xiàn)的幾起案子扮宠,更是在濱河造成了極大的恐慌,老刑警劉巖狐榔,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坛增,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡薄腻,警方通過查閱死者的電腦和手機(jī)收捣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庵楷,“玉大人罢艾,你說我怎么就攤上這事【∨Γ” “怎么了咐蚯?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)弄贿。 經(jīng)常有香客問我春锋,道長(zhǎng),這世上最難降的妖魔是什么差凹? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任期奔,我火速辦了婚禮侧馅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘呐萌。我一直安慰自己馁痴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布搁胆。 她就那樣靜靜地躺著,像睡著了一般邮绿。 火紅的嫁衣襯著肌膚如雪渠旁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天船逮,我揣著相機(jī)與錄音顾腊,去河邊找鬼。 笑死挖胃,一個(gè)胖子當(dāng)著我的面吹牛杂靶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播酱鸭,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼吗垮,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了凹髓?” 一聲冷哼從身側(cè)響起烁登,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蔚舀,沒想到半個(gè)月后饵沧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赌躺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年狼牺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片礼患。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡是钥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缅叠,到底是詐尸還是另有隱情咏瑟,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布痪署,位于F島的核電站码泞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏狼犯。R本人自食惡果不足惜余寥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一领铐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宋舷,春花似錦绪撵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绎狭,卻和暖如春细溅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背儡嘶。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工喇聊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蹦狂。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓誓篱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親凯楔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子窜骄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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

  • IO簡(jiǎn)單概述 IO解決問題 : 解決設(shè)備與設(shè)備之間的數(shù)據(jù)傳輸問題(硬盤 -> 內(nèi)存 內(nèi)存 -> 硬盤) 讀和寫文...
    奮斗的老王閱讀 3,429評(píng)論 0 53
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 2,689評(píng)論 0 3
  • 我們知道java中IO操作是一份很重要的知識(shí)點(diǎn),運(yùn)用IO知識(shí)可以完成許多使用的操作摆屯,在Java中啊研,提供了許多方法來...
    androidfan閱讀 6,496評(píng)論 2 4
  • 前言: 之前的文章《Java文件IO常用歸納》主要寫了Java 標(biāo)準(zhǔn)IO要注意的細(xì)節(jié)和技巧,由于網(wǎng)上各種學(xué)習(xí)途徑鸥拧,...
    androidjp閱讀 2,894評(píng)論 0 22
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,740評(píng)論 0 38