Go Academy · Pelajaran

Menulis File dan File Sementara

WriteFile, flag OpenFile, dan file sementara

Pelajaran 2 dari 413 langkah

Menulis File dan File Sementara adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

os.WriteFile

os.WriteFile menulis potongan byte ke berkas secara atomik (memotong lalu menulis). Cara ini sederhana untuk berkas kecil.

err := os.WriteFile("output.txt", []byte("hello"), 0644)
if err != nil { log.Fatal(err) }

os.Create dan defer Close

os.Create membuat atau memotong berkas dan mengembalikan *os.File. Selalu tutup dengan defer.

f, err := os.Create("output.txt")
if err != nil { return err }
defer f.Close()
f.WriteString("hello\n")

os.OpenFile dengan tanda opsi

Gunakan os.OpenFile untuk mode penambahan, pembuatan jika belum ada, atau pembuatan eksklusif:

f, err := os.OpenFile("log.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)

bufio.Writer

Bungkus berkas dengan bufio.NewWriter untuk menggabungkan penulisan kecil menjadi panggilan sistem yang lebih besar. Panggil Flush() sebelum menutup untuk menulis data yang masih berada di penyangga.

w := bufio.NewWriter(f)
fmt.Fprintf(w, "line %d\n", i)
w.Flush()

fmt.Fprintf

Tulis teks terformat ke io.Writer apa pun, termasuk berkas:

fmt.Fprintf(f, "name: %s, age: %d\n", name, age)

Pola penulisan berkas atomik

Tulis ke berkas sementara, lalu ubah namanya menjadi nama tujuan. Rename bersifat atomik pada POSIX; pembaca melihat berkas lama atau baru, tidak pernah hasil penulisan sebagian.

tmp, _ := os.CreateTemp("", "output-*.txt")
tmp.Write(data)
tmp.Close()
os.Rename(tmp.Name(), "output.txt")

os.CreateTemp

os.CreateTemp(dir, pattern) membuat berkas sementara dalam dir dengan nama unik yang sesuai dengan pattern. Fungsi ini mengembalikan berkas yang terbuka. Pemanggil bertanggung jawab menghapusnya.

f, err := os.CreateTemp("", "upload-*.json")
defer os.Remove(f.Name()) // cleanup

os.MkdirTemp

os.MkdirTemp membuat direktori sementara. Gunakan untuk perlengkapan pengujian atau alur pemrosesan yang membuat beberapa berkas sementara.

dir, err := os.MkdirTemp("", "batch-*")
defer os.RemoveAll(dir)

Izin berkas

Berikan bit izin Unix (misalnya, 0644 untuk pemilik baca-tulis, grup baca, dan pihak lain baca) sebagai argumen terakhir pada fungsi bergaya Create. Umask proses mungkin membatasinya lebih lanjut.

Memeriksa kesalahan penulisan

f.WriteString dan fmt.Fprintf dapat mengembalikan kesalahan (disk penuh, izin tidak memadai). Periksa kesalahan atau kumpulkan kesalahan tersebut dengan pembungkus penulis yang mencatat kesalahan pertama.

sync.File tidak aman untuk akses bersamaan

Beberapa goroutine yang menulis ke *os.File yang sama secara bersamaan dapat menyebabkan penulisan saling terselip. Gunakan mutex atau satu goroutine penulis khusus.

Pemeriksaan Singkat

Mengapa pola menulis ke berkas sementara lalu mengubah nama berkas dianggap atomik?

Ringkasan: Menulis Berkas

Poin penting:

  • os.WriteFile: penimpaan sederhana; bufio.Writer: menggabungkan penulisan kecil
  • Penulisan atomik: berkas sementara + pengubahan nama
  • os.CreateTemp / os.MkdirTemp untuk sumber daya sementara; selalu tunda pembersihan dengan defer
  • Periksa kesalahan penulisan; sinkronkan penulisan bersamaan
Gratis untuk memulai

Belajar Go dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
51
Pelajaran
203

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menulis File dan File Sementara” gratis?

Ya — teks lengkap “Menulis File dan File Sementara” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menulis File dan File Sementara”?

WriteFile, flag OpenFile, dan file sementara Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Menulis File dan File Sementara” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membaca File dengan os dan bufio
  2. Menulis File dan File Sementara
  3. Pengodean dan Penguraian JSON
  4. Streaming JSON dan CSV
← Kembali ke Go Academy