GO 文件讀取常用的方法


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本身 直接返回字符串
		data, err := r.ReadString('\n')

                // 打印出內容
		fmt.Printf("%v", string(data))
		fmt.Println("-------------------------")
 
		// 以分隔符形式讀取,比如此處設置的分割符是\n,則遇到\n就返回,且包括\n本身 直接返回字節數數組
		// data, err := r.ReadBytes('\n')
                
               

		// 讀取到末尾退出
		if err == io.EOF {
                        if len(line) > 0 {
				fmt.Println(line)
			}
			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))
}

原文鏈接:https://blog.csdn.net/weixin_39015119/article/details/103533432


免責聲明!

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



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