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