bufReader.ReadBytes('\n')和 bufReader.ReadString('\n')在讀到文件最后一行時(shí),會(huì)同時(shí)返回內(nèi)容line和io.EOF。而bufReader.Read()讀取到末尾時(shí),會(huì)先返回內(nèi)容,然后再下一次迭代時(shí)才返回io.EOF
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供龍泉驛網(wǎng)站建設(shè)、龍泉驛做網(wǎng)站、龍泉驛網(wǎng)站設(shè)計(jì)、龍泉驛網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、龍泉驛企業(yè)網(wǎng)站模板建站服務(wù),十年龍泉驛做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
我們需要對(duì)一些文本進(jìn)行"明文加密",何為"明文加密"?
從一些錯(cuò)亂的數(shù)據(jù)中,提取我們想要的數(shù)據(jù).
生成錯(cuò)亂的數(shù)據(jù)(可以隨機(jī)生成)
只需從上面的字符串提取數(shù)字即可,45.89.0.8
這里只是舉個(gè)簡(jiǎn)單例子
這樣就會(huì)該go文件同級(jí)目錄生成bin文件
并未使用binary.Read()方法
讀取到的文本
再根據(jù)自己的規(guī)則去提取該字符中你想要的數(shù)據(jù)即可.
?? 當(dāng)讀取91.2 MB文件時(shí),read1耗時(shí)43ms,read2耗時(shí)99ms。
查看源碼:
讀取文件主要是通過(guò) 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é)流
文件分類:文本文件和二進(jìn)制文件
文本文件可讀性好,占用的數(shù)據(jù)空間大
二進(jìn)制文件,可讀性差,占用的數(shù)據(jù)空間小
文件存取方式:隨機(jī)存取和順序存放
隨機(jī)存?。翰僮魉俣嚷?,對(duì)磁盤的消耗大
順序存放:操作數(shù)據(jù)塊,對(duì)磁盤的消耗小
初級(jí)方法
高級(jí)方法
在程序和文件之間,添加一個(gè)緩沖區(qū),每次程序讀取文件內(nèi)容的時(shí)候,先去緩沖區(qū)查看,如果需要的內(nèi)容,直接獲取,如果沒(méi)有再去文件中獲取
由于緩沖是在內(nèi)存當(dāng)中的,和程序的交互返回速度會(huì)非常快,這樣可以大大提高程序的性能和速度
缺點(diǎn):有的數(shù)據(jù)是只在緩沖中存儲(chǔ)的,如果在緩沖釋放之前,沒(méi)有將數(shù)據(jù)實(shí)例化落盤,會(huì)導(dǎo)致數(shù)據(jù)的丟失
按行操作文件對(duì)象
將之前的file方法封裝起來(lái),可以更加方便的使用
使用gzip.NewReader(文件句柄),來(lái)操作壓縮文件
示例: file,err := os.OpenFile("main.go", os.O_WRONLY|os.O_WRONLY, 0666)
三個(gè)參數(shù),
文件操作方法,需要注意不能沖突
操作完成后,當(dāng)前目錄出現(xiàn)一個(gè)text.txt 文件,內(nèi)容是:hello world,test
這里可以可以考慮使用buffio來(lái)實(shí)現(xiàn)