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.
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.
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
$ go run main.go
Kodingizni ishga tushiring