GoDasturchi
Appending to Files

Appending to Files

Faylga qo'shib yozish

Ba'zan faylni qayta yozib tashlash emas, balki mavjud mazmunga oxiriga qo'shib borish kerak bo'ladi — masalan log fayli. Buning uchun os.OpenFile maxsus bayroqlar (flags) bilan ishlatiladi.

example.go
package main

import (
	"fmt"
	"os"
)

func main() {
	os.WriteFile("log.txt", []byte("birinchi qator\n"), 0644)

	f, err := os.OpenFile("log.txt", os.O_APPEND|os.O_WRONLY, 0644)
	if err != nil {
		fmt.Println("xato:", err)
		return
	}
	defer f.Close()
	f.WriteString("ikkinchi qator\n")

	data, _ := os.ReadFile("log.txt")
	fmt.Print(string(data))
}

os.O_APPEND — "faqat oxiriga qo'sh, boshini o'chirma" degani. os.O_WRONLY — "faqat yozish uchun och" degani. Bu ikki bayroqni | (OR) belgisi bilan birlashtiramiz — xuddi ikkita talabni birgalikda qo'ygandek: "ham faqat yozish uchun, ham faqat oxiriga qo'shib". f.WriteString esa to'g'ridan-to'g'ri matnni faylga yozadi (baytga aylantirish shart emas).

>_ Exercise

Mavjud diary.txt fayliga yangi yozuv qo'shing (eskisini o'chirmasdan).

  • diary.txt ni os.O_APPEND|os.O_WRONLY bayroqlari bilan oching
  • "Ikkinchi kun: Go bilan File I/O o'rgandim\n" ni qo'shing
  • faylni qayta o'qib, to'liq mazmunini chop eting

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

os.OpenFile bilan os.O_APPEND bayrog'i — mavjud faylga eskisini o'chirmasdan qo'shib yozish usuli.

NEXT UP

Buffered Writing

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Appending to Files

Faylga qo'shib yozish

Ba'zan faylni qayta yozib tashlash emas, balki mavjud mazmunga oxiriga qo'shib borish kerak bo'ladi — masalan log fayli. Buning uchun os.OpenFile maxsus bayroqlar (flags) bilan ishlatiladi.

example.go
package main

import (
	"fmt"
	"os"
)

func main() {
	os.WriteFile("log.txt", []byte("birinchi qator\n"), 0644)

	f, err := os.OpenFile("log.txt", os.O_APPEND|os.O_WRONLY, 0644)
	if err != nil {
		fmt.Println("xato:", err)
		return
	}
	defer f.Close()
	f.WriteString("ikkinchi qator\n")

	data, _ := os.ReadFile("log.txt")
	fmt.Print(string(data))
}

os.O_APPEND — "faqat oxiriga qo'sh, boshini o'chirma" degani. os.O_WRONLY — "faqat yozish uchun och" degani. Bu ikki bayroqni | (OR) belgisi bilan birlashtiramiz — xuddi ikkita talabni birgalikda qo'ygandek: "ham faqat yozish uchun, ham faqat oxiriga qo'shib". f.WriteString esa to'g'ridan-to'g'ri matnni faylga yozadi (baytga aylantirish shart emas).

>_ Exercise

Mavjud diary.txt fayliga yangi yozuv qo'shing (eskisini o'chirmasdan).

  • diary.txt ni os.O_APPEND|os.O_WRONLY bayroqlari bilan oching
  • "Ikkinchi kun: Go bilan File I/O o'rgandim\n" ni qo'shing
  • faylni qayta o'qib, to'liq mazmunini chop eting

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

os.OpenFile bilan os.O_APPEND bayrog'i — mavjud faylga eskisini o'chirmasdan qo'shib yozish usuli.

NEXT UP

Buffered Writing