Kotlin總結(jié)3

Date

這個(gè)是日常用的比較多的類,在kotlin中用傳統(tǒng)的方法脆霎,IDEA會(huì)提示語(yǔ)法警告总处,有更好的方法,就是下面的

  • 傳統(tǒng)的方法
    fun formatDate(date: Date, pattern: String): String = SimpleDateFormat(pattern).format(date)
  • kotlin推薦方法
    fun formatDate(date: Date, dateFormat: DateFormat): String = dateFormat.format(date)

  • 提示如下

To get local formatting use getDateInstance(), getDateTimeInstance(), or getTimeInstance(), or use new SimpleDateFormat(String template, Locale locale) with for example Locale. US for ASCII dates.

獲得本地格式化請(qǐng)使用getDateInstance()睛蛛,getDateTimeInstance()鹦马,或者getTimeInstance(),或者使用new SimpleDateFormat(String template, Locale locale)忆肾,例如Locale.US為ASCII日期荸频。

  • 但是它只提供了常用的,這些之外的客冈,還是自定義吧

靜態(tài)常量和靜態(tài)方法共存

  • 工具類

object DateUtils {
    
    const val SFStr = "yyyyMMdd"

    fun formatDate(date: Date, pattern: String): String = SimpleDateFormat(pattern).format(date)
    }

  • 引用
//java
DateUtils.INSTANCE.formatDate(new Date(),DateUtils.DF_YYYYMMDDHHMMSS);
//kotlin
DateUtils.formatDate(Date(),DateUtils.DF_YYYYMMDDHHMMSS)

java的引用旭从,看起來(lái)是個(gè)單例,但是我的習(xí)慣是像java的靜態(tài)方法一樣調(diào)用

  • class可以做到场仲,如果把工具類改成class和悦,那么靜態(tài)常量就沒(méi)法用了
  • 伴生對(duì)象也可以做到,但object又不允許有伴生對(duì)象
  • 所以燎窘,加個(gè)注解就搞定了@JvmStatic
  • 加了注解不影響kotlin調(diào)用摹闽,只是簡(jiǎn)化了java調(diào)用
//工具類方法
@JvmStatic
fun formatDate(date: Date, pattern: String): String = SimpleDateFormat(pattern).format(date)

//java調(diào)用
DateUtils.formatDate(new Date(),DateUtils.DF_YYYYMMDDHHMMSS);

Kotlin讀寫流操作

寫文件在java中是這么操作的

    public static void byteArrayToFile(byte[] bytes, String filePath) throws Exception {
        InputStream in = new ByteArrayInputStream(bytes);
        File destFile = new File(filePath);
        if (!destFile.getParentFile().exists()) {
            destFile.getParentFile().mkdirs();
        }
        destFile.createNewFile();
        OutputStream out = new FileOutputStream(destFile);
        byte[] cache = new byte[CACHE_SIZE];
        int nRead = 0;
        while ((nRead = in.read(cache)) != -1) {
            out.write(cache, 0, nRead);
            out.flush();
        }
        out.close();
        in.close();
    }

轉(zhuǎn)成kotlin后蹄咖,是不允許在while中寫賦值表達(dá)式的褐健,弄好好久,發(fā)現(xiàn)應(yīng)該是這樣的

    @Throws(Exception::class)
    fun byteArrayToFile(bytes: ByteArray, filePath: String) {
        val inStream = ByteArrayInputStream(bytes)
        val destFile = File(filePath)
        if (!destFile.parentFile.exists()) {
            destFile.parentFile.mkdirs()
        }
        destFile.createNewFile()
        val out = FileOutputStream(destFile)
        val cache = ByteArray(CACHE_SIZE)
        var nRead = inStream.read(cache)

        while (nRead != -1) {
            out.write(cache, 0, nRead)
            nRead = inStream.read(cache)
        }
        inStream.copyTo(out)
        out.close()
        inStream.close()
    }

然后Slient大神發(fā)了一個(gè)擴(kuò)展方法InputStream.copyTo

于是就變成這樣了

@Throws(Exception::class)
fun byteArrayToFile(bytes: ByteArray, filePath: String) {
    val inStream = ByteArrayInputStream(bytes)
    val destFile = File(filePath)
    if (!destFile.parentFile.exists())
        destFile.parentFile.mkdirs()
    destFile.createNewFile()
    val out = FileOutputStream(destFile)
    inStream.copyTo(out,MemoryUtils.KB)
    out.close()
    inStream.close()
}

臥槽澜汤,感覺(jué)好多語(yǔ)法糖蚜迅,上次忘了一個(gè)什么方法,寫了半天俊抵,也是Slient大神給了個(gè)語(yǔ)法糖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谁不,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子徽诲,更是在濱河造成了極大的恐慌刹帕,老刑警劉巖吵血,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異偷溺,居然都是意外死亡蹋辅,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門挫掏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)侦另,“玉大人,你說(shuō)我怎么就攤上這事尉共“担” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵袄友,是天一觀的道長(zhǎng)殿托。 經(jīng)常有香客問(wèn)我,道長(zhǎng)杠河,這世上最難降的妖魔是什么碌尔? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮券敌,結(jié)果婚禮上唾戚,老公的妹妹穿的比我還像新娘。我一直安慰自己待诅,他們只是感情好叹坦,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著卑雁,像睡著了一般募书。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上测蹲,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天莹捡,我揣著相機(jī)與錄音,去河邊找鬼扣甲。 笑死篮赢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的琉挖。 我是一名探鬼主播启泣,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼示辈!你這毒婦竟也來(lái)了寥茫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤矾麻,失蹤者是張志新(化名)和其女友劉穎纱耻,沒(méi)想到半個(gè)月后芭梯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弄喘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年粥帚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片限次。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芒涡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卖漫,到底是詐尸還是另有隱情费尽,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布羊始,位于F島的核電站旱幼,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏突委。R本人自食惡果不足惜柏卤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望匀油。 院中可真熱鬧缘缚,春花似錦、人聲如沸敌蚜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)弛车。三九已至齐媒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纷跛,已是汗流浹背喻括。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贫奠,地道東北人唬血。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像叮阅,于是被迫代替她去往敵國(guó)和親刁品。 傳聞我的和親對(duì)象是個(gè)殘疾皇子泣特,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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