關(guān)于Java里面String類型長度的問題躺枕,之前一直存在一個錯誤的理解,那就是控制臺沒有輸出完供填,不代表String類型裝不下那么多數(shù)據(jù)拐云。
按照我的猜測,在控制臺里輸出近她,比如在安卓開發(fā)中使用Log.i輸出叉瘩,控制臺緩沖大小是有限制的,也就是說粘捎,一個長字符串在控制臺輸出被截斷薇缅。存在兩種可能危彩,一是字符串真的炸了。而是控制臺緩沖區(qū)炸了泳桦。
為了驗證這個問題汤徽,我將一個從服務(wù)器返回的Json字符串使用Log.i直接輸出到控制臺中,大小被截斷了灸撰,和在瀏覽器上返回的結(jié)果差距甚遠谒府。難道是控制臺單行緩沖區(qū)不夠?好吧浮毯,我生氣了巴暌摺!我將這個超長字符串做分割處理债蓝,超長是多長壳鹤?下一段肯定會講到的!怎么分割呢饰迹?我利用String.substring方法芳誓,把字符串分割成單個長度為50的子段,然后再一個一個的輸出蹦锋,我也不知道有多長U咨场!莉掂!然后我去葛圃,程序依然炸了,連個異常都沒有抓到憎妙!現(xiàn)在我的猜測是我用來截斷的變量是int库正,可能那個字符串的長度超過int的表示范圍了,當(dāng)然這只是猜測厘唾,還沒有用其他類型進行進一步驗證褥符。好吧,在控制臺輸出算是失敗了8ЮE玳埂!鹤树!
文件流來一波試一下铣焊!File file = new File("test.txt")。新建一個對象很有必要的啊罕伯,畢竟我沒女朋友曲伊。當(dāng)然,在安卓開發(fā)里面追他,存取文件要復(fù)雜一下坟募,沒有PC上那么單純岛蚤。好了,這又不是重點懈糯,能保存就行了涤妒。接著,重點來了昂利!我獲取了一個這個文件相關(guān)的PrintWriter對象届腐。具體方法PrintWriter writer = new PrintWriter(file)。接著蜂奸,這個很關(guān)鍵啊,很能說明我對字符串的偏見硬萍。我將那個從服務(wù)器返回的東東直接塞進一個字符串扩所,然后把這個字符串用writer直接添加到文件里面,方法如下writer.append(s)朴乖,這個s就是那個不知道炸沒有炸的字符串祖屏。接著writer.flush(),writer.close()。刷新緩沖區(qū)买羞,關(guān)閉writer袁勺。激動人心的一刻來了,文件夾下有測試文件了畜普∑诜幔看一下大小,32KB吃挑。哦豁钝荡,有點大也!點開一看舶衬,和瀏覽器返回的結(jié)果一模一樣安和ā!媽的智障逛犹!
說明了什么端辱,控制臺就是智障,它輸出不了的工具虽画。不代表String裝不下N璞巍!狸捕!被騙了吧喷鸽,什么控制臺!>呐摹W鲎!@ !混槐!
好了编兄,寫完收工!每天把問題和辛苦歷程記下來声登,這個是規(guī)矩狠鸳,不能破喲,堅持下去悯嗓!
0:22