GoDasturchi
Reading Files Line by Line

Reading Files Line by Line

Fayllarni qator-qator o'qish

Haqiqiy dasturlar ko'pincha diskdagi fayllar bilan ishlaydi — log fayllarni tahlil qilish, konfiguratsiya o'qish, hisobotlarni saqlash. Eng sodda operatsiya — butun faylni bitta chiqishga yozib, keyin uni qator-qator o'qish.

example.go
os.WriteFile("/tmp/lines.txt", []byte("salom\ndunyo\n"), 0644)

file, err := os.Open("/tmp/lines.txt")
if err != nil {
    // xatoni boshqarish
}
defer file.Close()

scanner := bufio.NewScanner(file)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}

bufio.Scanner — DNS Resolver kursidagi strings.Splitga qaraganda xotira jihatidan samaraliroq usul: u faylni bir zumda to'liq xotiraga yuklamaydi, balki bufer orqali qator-qator o'qiydi. scanner.Scan() navbatdagi qator bor-yo'qligini tekshiradi va true/false qaytaradi — bu The Clean Switch kursidagi for scanner.Scan() andazasi, for rangening fayllar uchun analogi.

0644 — faylning ruxsat (permission) kodi: egasi o'qishi/yozishi, boshqalar faqat o'qishi mumkin. Bu kursda fayllarni doim /tmp/ papkasida yaratamiz — bu vaqtinchalik, har doim yozish mumkin bo'lgan joy.

>_ Exercise

Avval os.WriteFile bilan /tmp/lines.txt fayliga "salom\ndunyo\ngo\n" matnini yozing. So'ngra faylni os.Open bilan oching, bufio.Scanner yordamida qator-qator o'qib, har birini "<raqam>: <qator>" shaklida (raqam 1dan boshlanadi) chop eting.

Stuck? Reveal a hint to help you.

Hints (0/4)

Key Takeaway

Key Takeaway:

bufio.Scanner fayllarni qator-qator, xotirani tejab o'qishning standart usuli. os.WriteFile/os.Open/os.ReadFile — Go'da fayl bilan ishlashning asosiy funksiyalari, barchasi error qaytaradi va uni tekshirish shart.

NEXT UP

Writing and Appending to Files

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Reading Files Line by Line

Fayllarni qator-qator o'qish

Haqiqiy dasturlar ko'pincha diskdagi fayllar bilan ishlaydi — log fayllarni tahlil qilish, konfiguratsiya o'qish, hisobotlarni saqlash. Eng sodda operatsiya — butun faylni bitta chiqishga yozib, keyin uni qator-qator o'qish.

example.go
os.WriteFile("/tmp/lines.txt", []byte("salom\ndunyo\n"), 0644)

file, err := os.Open("/tmp/lines.txt")
if err != nil {
    // xatoni boshqarish
}
defer file.Close()

scanner := bufio.NewScanner(file)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}

bufio.Scanner — DNS Resolver kursidagi strings.Splitga qaraganda xotira jihatidan samaraliroq usul: u faylni bir zumda to'liq xotiraga yuklamaydi, balki bufer orqali qator-qator o'qiydi. scanner.Scan() navbatdagi qator bor-yo'qligini tekshiradi va true/false qaytaradi — bu The Clean Switch kursidagi for scanner.Scan() andazasi, for rangening fayllar uchun analogi.

0644 — faylning ruxsat (permission) kodi: egasi o'qishi/yozishi, boshqalar faqat o'qishi mumkin. Bu kursda fayllarni doim /tmp/ papkasida yaratamiz — bu vaqtinchalik, har doim yozish mumkin bo'lgan joy.

>_ Exercise

Avval os.WriteFile bilan /tmp/lines.txt fayliga "salom\ndunyo\ngo\n" matnini yozing. So'ngra faylni os.Open bilan oching, bufio.Scanner yordamida qator-qator o'qib, har birini "<raqam>: <qator>" shaklida (raqam 1dan boshlanadi) chop eting.

Stuck? Reveal a hint to help you.

Hints (0/4)

Key Takeaway

Key Takeaway:

bufio.Scanner fayllarni qator-qator, xotirani tejab o'qishning standart usuli. os.WriteFile/os.Open/os.ReadFile — Go'da fayl bilan ishlashning asosiy funksiyalari, barchasi error qaytaradi va uni tekshirish shart.

NEXT UP

Writing and Appending to Files