GO 文件讀取常用的方法


方式1: 一行一行的方式讀取

其中常用的方法就有:ReadString,ReadLine,ReadBytes

  • ReadLine 返回單個行,不包括行尾字節,就是說,返回的內容不包括\n或者\r\n,返回的類型為[]byte
  • ReadString('\n') 以分隔字符方式讀取,遇到傳入的分割字符時就返回結果,返回的結果包含分隔字符本身,返回的類型為string,比如傳入\n,代碼遇到\n字符就返回,而文件行尾都是以\n結尾,所以ReadString('\n')就實現了分行讀取
  • ReadBytes('\n') 和ReadString方法差不多,只是結果以[]byte類型返回數據

** 文件讀取需要注意點:**

  • 記得處理完后關閉文件,以防止內存泄露,占用操作系統文件句柄數
  • 文件讀取結束后返回的err類型是io.EOF,可以使用這個來跳出循環

方式一源碼例子:

package main import ( "bufio" "fmt" "io" "os" ) func main() { // 讀取一個文件的內容 file, err := os.Open("./abc.txt") if err != nil { fmt.Println("open file err:", err.Error()) return } // 處理結束后關閉文件 defer file.Close() // 使用bufio讀取 r := bufio.NewReader(file) for { // 分行讀取文件 ReadLine返回單個行,不包括行尾字節(\n 或 \r\n) //data, _, err := r.ReadLine() // 以分隔符形式讀取,比如此處設置的分割符是\n,則遇到\n就返回,且包括\n本身 直接返回字符串 //str, err := r.ReadString('\n') // 以分隔符形式讀取,比如此處設置的分割符是\n,則遇到\n就返回,且包括\n本身 直接返回字節數數組 data, err := r.ReadBytes('\n') // 讀取到末尾退出 if err == io.EOF { break } if err != nil { fmt.Println("read err", err.Error()) break } // 打印出內容 fmt.Printf("%v", string(data)) } } 

方式2: 一次性讀取

一次性讀取適合讀取內容比較小的文件,大文件讀取建議使用第一種方式

一次性讀取可以使用ioutil.ReadFile方法,次方法不需要關閉文件,源碼例子如下:

package main import ( "fmt" "io/ioutil" ) func main() { // 使用ioutil一次性讀取文件 data, err := ioutil.ReadFile("./abc.txt") if err != nil { fmt.Println("read file err:", err.Error()) return } // 打印文件內容 fmt.Println(string(data)) } 
 來源: 網站優化公司


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM