GoDasturchi
Reading Files Line by Line

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.

example.go
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.

Hints (0/3)

Key Takeaway

Key Takeaway:

bufio.Scanner katta fayllarni xotirani band qilmasdan, qatorma-qator o'qishning standart usuli.

NEXT UP

Writing Entire Files

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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.

example.go
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.

Hints (0/3)

Key Takeaway

Key Takeaway:

bufio.Scanner katta fayllarni xotirani band qilmasdan, qatorma-qator o'qishning standart usuli.

NEXT UP

Writing Entire Files