package main
import (
"fmt"
"os"
"path/filepath"
)
func check(e error) {
if e != nil {
panic(e)
}
}
func main() {
// Eng oson yo‘l — os.CreateTemp: fayl yaratadi va o‘qish/yozish uchun ochadi
// Birinchi argument "" — OS ning standart vaqtinchalik joyidan foydalanish
f, err := os.CreateTemp("", "sample")
check(err)
// Vaqtinchalik fayl nomi
fmt.Println("Temp file name:", f.Name())
// Ish tugagach faylni tozalashni rejalang — OS keyinchalik o‘zi ham tozalashi mumkin,
// lekin aniq tozalash yaxshi amaliyot
defer os.Remove(f.Name())
// Faylga ma’lumot yozish
_, err = f.Write([]byte{1, 2, 3, 4})
check(err)
// Ko‘p vaqtinchalik fayllar kerak bo‘lsa, vaqtinchalik katalog yaratish qulay
// os.MkdirTemp — CreateTemp kabi, lekin katalog nomi qaytaradi
dname, err := os.MkdirTemp("", "sampledir")
check(err)
fmt.Println("Temp dir name:", dname)
// Butun katalog daraxtini tozalash
defer os.RemoveAll(dname)
// Endi shu katalog ichida vaqtinchalik fayl nomlarini sintez qilamiz
fname := filepath.Join(dname, "file1")
err = os.WriteFile(fname, []byte{1, 2}, 0666)
check(err)
}
Terminalda bajarish:
$ go run temporary-files-and-directories.go
Temp file name: /tmp/sample610887201
Temp dir name: /tmp/sampledir898854668