Reading Files Line by Line
Faylni qatorma-qator o'qish
Katta fayllarni bitta zarbda o'qish xotirani band qiladi. Buning o'rniga bufio.Scanner fayl bo'ylab qatorma-qator "yurib chiqishga" imkon beradi — xuddi kitobni sahifama-sahifa o'qigandek, hammasini birdan xotirangizga solib qo'ymay.
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
os.WriteFile("data.txt", []byte("bir\nikki\nuch\n"), 0644)
f, _ := os.Open("data.txt")
defer f.Close()
scanner := bufio.NewScanner(f)
for scanner.Scan() {
fmt.Println("qator:", scanner.Text())
}
}os.Open faylni o'qish uchun ochadi (yozish uchun emas). defer f.Close() — funksiya tugaganda faylni albatta yopishni ta'minlaydi, uni ochiq qoldirib ketmaslik uchun. bufio.NewScanner(f) faylni o'raydi va scanner.Scan() har chaqirilganda bitta keyingi qatorni o'qib, true qaytaradi (qator qolmasa false); scanner.Text() esa o'sha qatorning matnini beradi.
>_ Exercise
fruits.txt faylidagi mevalarni sanab, har birini raqamlab chop eting.
- •fruits.txt ni os.Open bilan oching (defer bilan yopishni unutmang)
- •bufio.Scanner bilan har bir qatorni o'qing
- •har bir qatorni "- " prefiksi bilan chop eting
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
bufio.Scanner katta fayllarni xotirani band qilmasdan, qatorma-qator o'qishning standart usuli.
NEXT UP
Writing Entire Files
$ go run main.go
Kodingizni ishga tushiring