欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中I/O流讀取數(shù)據(jù)不完整的問題解決

 更新時間:2022年05月12日 09:35:21   作者:小猶太?  
本文主要介紹了ava中I/O流讀取數(shù)據(jù)不完整的問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一·問題描述:

1.利用Java的轉(zhuǎn)換流去讀取一個json文件數(shù)據(jù),獲取的數(shù)據(jù)無法被解析為json格式數(shù)據(jù)(格式總是報錯),且獲取的數(shù)據(jù)末尾缺少一部分數(shù)據(jù)。

(1)Java源代碼如圖

(2)原json文件如圖

(3)解析獲取的數(shù)據(jù)如圖:轉(zhuǎn)換為json格式數(shù)據(jù)報錯

二·問題原因:

1.最后一次緩存數(shù)組里面的數(shù)據(jù),沒有拼接到最終字符串數(shù)據(jù)里面 2.stringBuffer.append(buffer)拼接數(shù)據(jù)的方法,內(nèi)部可能會加點空格之類的什么數(shù)據(jù),結(jié)果導(dǎo)致獲取的數(shù)據(jù)不完整,但數(shù)據(jù)長度卻比原文件數(shù)據(jù)長。

三·解決辦法:

1.由于輸入流沒有flush方法,因此不能通過刷新解決,但是可以通過改變拼接最終數(shù)據(jù)的方法解決。

具體操作如下所示:

(1)若緩存數(shù)組為:字符數(shù)組
將原拼接數(shù)據(jù)形式: stringBuffer.append(buffer);
更改為這種拼接數(shù)據(jù)形式(推薦): stringBuffer.append(buffer,0,length);

(2)若緩存數(shù)組為:字節(jié)數(shù)組
將原轉(zhuǎn)換數(shù)據(jù)形式: String str = new String(cbuf);
更改為這種拼接數(shù)據(jù)形式(推薦): String str = new String(cbuf,0,len);

(3)若是利用輸出流輸出數(shù)據(jù),也建議使用這種風(fēng)格。
例如:outputStreamWriter.write(cbuf,0,len);

最終Java源代碼如圖所示:結(jié)果與原json數(shù)據(jù)長度差一位,基本完全一致

四·測試結(jié)果:成功

1.將獲取的數(shù)據(jù)進行json格式解析,結(jié)果json格式解析正確且文件末尾數(shù)據(jù)完整,同時與原json數(shù)據(jù)長度差一位,基本完全一致。(差的那一位可能是空格)

到此這篇關(guān)于Java中I/O流讀取數(shù)據(jù)不完整的問題解決的文章就介紹到這了,更多相關(guān)Java I/O流讀取數(shù)據(jù)不完整 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論