這篇文章主要講解了Golang讀取文件內(nèi)容的方法,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。
本文旨在快速介紹Go標(biāo)準(zhǔn)庫中讀取文件的許多選項(xiàng)。
在Go中(就此而言,大多數(shù)底層語言和某些動(dòng)態(tài)語言(如Node))返回字節(jié)流。 不將所有內(nèi)容自動(dòng)轉(zhuǎn)換為字符串的好處是,其中之一是避免昂貴的字符串分配,這會(huì)增加GC壓力。
為了使本文更加簡單,我將使用string(arrayOfBytes)將bytes數(shù)組轉(zhuǎn)換為字符串。 但是,在發(fā)布生產(chǎn)代碼時(shí),不應(yīng)將其作為一般建議。
1.讀取整個(gè)文件到內(nèi)存中
首先,標(biāo)準(zhǔn)庫提供了多種功能和實(shí)用程序來讀取文件數(shù)據(jù)。我們將從os軟件包中提供的基本情況開始。這意味著兩個(gè)先決條件:
有了os.File對象的句柄,我們可以查詢大小并實(shí)例化一個(gè)字節(jié)列表。
package main import ( "os" "fmt" ) func main() { file, err := os.Open("filetoread.txt") if err != nil { fmt.Println(err) return } defer file.Close() fileinfo, err := file.Stat() if err != nil { fmt.Println(err) return } filesize := fileinfo.Size() buffer := make([]byte, filesize) bytesread, err := file.Read(buffer) if err != nil { fmt.Println(err) return } fmt.Println("bytes read: ", bytesread) fmt.Println("bytestream to string: ", string(buffer)) }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。