在Go中高效遍歷大文件的方法通常有兩種:逐行讀取和緩存讀取。
file, err := os.Open("example.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
// 處理每一行內容
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
file, err := os.Open("example.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
reader := bufio.NewReader(file)
buffer := make([]byte, 1024)
for {
n, err := reader.Read(buffer)
if err != nil && err != io.EOF {
log.Fatal(err)
}
if n == 0 {
break
}
// 處理讀取的數據
}
無論使用哪種方法,都需要注意在遍歷大文件時及時關閉文件資源,以避免內存泄漏。同時,根據實際情況調整緩沖區大小,以提高讀取效率。