?? 當(dāng)讀取91.2 MB文件時(shí),read1耗時(shí)43ms,read2耗時(shí)99ms。
創(chuàng)新互聯(lián)一直通過網(wǎng)站建設(shè)和網(wǎng)站營(yíng)銷幫助企業(yè)獲得更多客戶資源。 以"深度挖掘,量身打造,注重實(shí)效"的一站式服務(wù),以網(wǎng)站建設(shè)、成都做網(wǎng)站、移動(dòng)互聯(lián)產(chǎn)品、成都全網(wǎng)營(yíng)銷服務(wù)為核心業(yè)務(wù)。10多年網(wǎng)站制作的經(jīng)驗(yàn),使用新網(wǎng)站建設(shè)技術(shù),全新開發(fā)出的標(biāo)準(zhǔn)網(wǎng)站,不但價(jià)格便宜而且實(shí)用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡(jiǎn)單易用,維護(hù)方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設(shè)的選擇。
查看源碼:
讀取文件主要是通過 Read(p []byte) (n int, err error) :
官方文檔中關(guān)于該接口方法的說(shuō)明:
結(jié)論:
??ReadFile(filename string)方法之所以速度快的原因就是先計(jì)算出file文件的size,在初始化對(duì)應(yīng)size大小的buff,傳入ReadRead(p []byte) 來(lái)讀取字節(jié)流
是。Go(又稱Golang)是Google開發(fā)的一種靜態(tài)強(qiáng)類型、編譯型、并發(fā)型,并具有垃圾回收功能的編程語(yǔ)言,Go讀取CSV文件,其內(nèi)容都被轉(zhuǎn)換成字符串?dāng)?shù)組。
根據(jù)需求做一個(gè)csv報(bào)表數(shù)據(jù)導(dǎo)入入庫(kù)功能,運(yùn)行多天突然運(yùn)維告知導(dǎo)入數(shù)據(jù)有問題,有問題那就排查唄。。。
題外話:這個(gè)問題足足浪費(fèi)了我2天時(shí)間,期間還出了其他的一些問題著實(shí)讓我抓狂,另外這篇文章希望能幫到你,不要在采坑了?。?!
說(shuō)在前面,這個(gè)csv表格數(shù)據(jù)是有中文的。ok繼續(xù)
通過日志打點(diǎn)發(fā)現(xiàn)了以下錯(cuò)誤
找了一圈,著實(shí)頭痛,我也知道中文需要做處理轉(zhuǎn)化這個(gè)我已經(jīng)做了,并且已經(jīng)明確是utf-8了通過標(biāo)準(zhǔn)庫(kù)方法進(jìn)行判斷的還是報(bào)錯(cuò)。著實(shí)讓我摸不著頭腦。判斷utf-8方法如下
ok,最后借助了百度,google找了一大圈功夫不負(fù)有心人,最后發(fā)現(xiàn)utf-8還有 utf-8 bom 這種編碼格式,我想罵娘。。。至于編碼規(guī)則啥的就不詳細(xì)說(shuō)了,有興趣自行百度吧。
解決方案如下:
至于其他編碼方式以及轉(zhuǎn)換可以查看golang官方擴(kuò)展庫(kù) golang.org/x/text/encoding 庫(kù)中的源碼。
一個(gè)用golang的無(wú)名小卒
完~
沒做轉(zhuǎn)碼吧?初步懷疑是這個(gè)問題,你嘗試下UTF8與GBK之間轉(zhuǎn)下碼,應(yīng)該就可以了
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter text: ")
text, _ := reader.ReadString('\n')
fmt.Println(text)
這是讀取控制臺(tái)輸入的數(shù)據(jù),可以開協(xié)程的方式來(lái)執(zhí)行這個(gè)代碼,協(xié)程讀取,就可以在其他地方使用