GoDasturchi
Writing and Appending to Files

Writing and Appending to Files

Fayllarga yozish va qo'shish

os.WriteFile qulay, lekin u har doim faylni butunlay qayta yozadi — agar fayl allaqachon mavjud bo'lsa, uning eski mazmuni yo'qoladi. Log fayl kabi, vaqt o'tishi bilan qo'shib boriladigan fayllar uchun boshqa yondashuv kerak: os.OpenFile maxsus bayroqlar bilan.

example.go
f, err := os.OpenFile("/tmp/log.txt", os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
    // xatoni boshqarish
}
defer f.Close()

f.WriteString("yangi qator\n")

os.O_APPEND — yozishni fayl oxiriga qo'shishni bildiradi (mavjud mazmunni o'chirmaydi), os.O_WRONLY — faylni faqat yozish uchun ochishni bildiradi. Bu ikkita bayroq | (bitwise OR) bilan birlashtiriladi — Interfaces & Polymorphism kursidagi interfeys kompozitsiyasiga o'xshab, bu yerda ham kichik "imkoniyat" birliklarini birlashtirib, kattaroq xatti-harakat hosil qilinadi.

>_ Exercise

os.WriteFile bilan /tmp/log.txt fayliga "birinchi qator\n" yozing. So'ngra os.OpenFile bilan os.O_APPEND|os.O_WRONLY bayroqlari bilan oching va "ikkinchi qator\n"ni WriteString bilan qo'shing. Oxirida os.ReadFile bilan butun faylni o'qib, uning mazmunini chop eting.

Stuck? Reveal a hint to help you.

Hints (0/4)

Key Takeaway

Key Takeaway:

os.WriteFile faylni butunlay qayta yozadi; os.OpenFile bilan os.O_APPEND bayrog'idan foydalanish esa mavjud mazmunga qo'shib yozish imkonini beradi. Bayroqlarni | bilan birlashtirish — kerakli xatti-harakatni aniq belgilashning Go'ga xos usuli.

NEXT UP

JSON Marshaling and Unmarshaling

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Writing and Appending to Files

Fayllarga yozish va qo'shish

os.WriteFile qulay, lekin u har doim faylni butunlay qayta yozadi — agar fayl allaqachon mavjud bo'lsa, uning eski mazmuni yo'qoladi. Log fayl kabi, vaqt o'tishi bilan qo'shib boriladigan fayllar uchun boshqa yondashuv kerak: os.OpenFile maxsus bayroqlar bilan.

example.go
f, err := os.OpenFile("/tmp/log.txt", os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
    // xatoni boshqarish
}
defer f.Close()

f.WriteString("yangi qator\n")

os.O_APPEND — yozishni fayl oxiriga qo'shishni bildiradi (mavjud mazmunni o'chirmaydi), os.O_WRONLY — faylni faqat yozish uchun ochishni bildiradi. Bu ikkita bayroq | (bitwise OR) bilan birlashtiriladi — Interfaces & Polymorphism kursidagi interfeys kompozitsiyasiga o'xshab, bu yerda ham kichik "imkoniyat" birliklarini birlashtirib, kattaroq xatti-harakat hosil qilinadi.

>_ Exercise

os.WriteFile bilan /tmp/log.txt fayliga "birinchi qator\n" yozing. So'ngra os.OpenFile bilan os.O_APPEND|os.O_WRONLY bayroqlari bilan oching va "ikkinchi qator\n"ni WriteString bilan qo'shing. Oxirida os.ReadFile bilan butun faylni o'qib, uning mazmunini chop eting.

Stuck? Reveal a hint to help you.

Hints (0/4)

Key Takeaway

Key Takeaway:

os.WriteFile faylni butunlay qayta yozadi; os.OpenFile bilan os.O_APPEND bayrog'idan foydalanish esa mavjud mazmunga qo'shib yozish imkonini beradi. Bayroqlarni | bilan birlashtirish — kerakli xatti-harakatni aniq belgilashning Go'ga xos usuli.

NEXT UP

JSON Marshaling and Unmarshaling