Log aplikasi, berkas hasil ekspor, dan laporan sederhana biasanya berupa teks yang bertambah dari waktu ke waktu. Kebutuhan itu memunculkan dua mode penulisan yang berbeda: menimpa isi lama dengan isi baru, atau menambah (append) baris baru di bagian akhir. Class File menyediakan satu method untuk setiap mode, sehingga perbedaannya cukup dibedakan lewat nama method yang dipanggil.
Menimpa versus Menambah #
WriteAllText selalu membuat berkas baru: bila berkas sudah ada, isi lamanya ditimpa tanpa peringatan apa pun. AppendAllText membuka berkas yang sudah ada lalu menempelkan teks di posisi akhir; bila berkas belum ada, berkas baru dibuat terlebih dahulu. AppendAllLines bekerja seperti AppendAllText, tetapi menerima koleksi string dan menulis satu baris untuk setiap elemennya.
Ketiga method membuka dan menutup berkas pada setiap panggilan, sehingga aman dipakai sesekali tetapi boros bila penulisan terjadi puluhan kali per detik. Untuk penulisan beruntun seperti itu, bab StreamWriter nanti membuka berkas sekali untuk banyak baris. Keuntungan bentuk statis tetap pada keringkasannya: satu baris kode sudah menyelesaikan satu penulisan utuh.
Contoh Log Aktivitas #
Contoh berikut menyusun berkas log dalam tiga tahap, membacanya kembali, lalu menunjukkan efek penimpaan:
string dir = Path.Combine(Path.GetTempPath(), "verify-6c", "menulis-file-teks");
Directory.CreateDirectory(dir);
string path = Path.Combine(dir, "log-aktivitas.txt");
File.WriteAllText(path, "Mulai aplikasi" + Environment.NewLine);
File.AppendAllText(path, "Pengguna masuk" + Environment.NewLine);
string[] peristiwa = { "Kueri selesai", "Aplikasi ditutup" };
File.AppendAllLines(path, peristiwa);
foreach (string b in File.ReadLines(path))
{
Console.WriteLine(b);
}
File.WriteAllText(path, "Isi baru menimpa isi lama");
Console.WriteLine($"Setelah ditimpa: {File.ReadAllText(path)}");Output yang Dihasilkan:
Mulai aplikasi
Pengguna masuk
Kueri selesai
Aplikasi ditutup
Setelah ditimpa: Isi baru menimpa isi lamaMari kita bedah baris demi baris:
WriteAllText(path, ...): membuat berkas log dan menulis barisMulai aplikasi;Environment.NewLinemenyisipkan pemisah baris milik sistem operasi.AppendAllText(path, ...): menempelkanPengguna masukdi akhir berkas tanpa menyentuh baris sebelumnya.File.AppendAllLines(path, peristiwa): menulis dua elemen array; method menambahkan pemisah baris untuk setiap elemen secara otomatis.File.ReadLines(path): membaca isi log baris demi baris untuk membuktikan hasil ketiga penulisan.WriteAllTextkedua: mengganti seluruh isi berkas dengan satu kalimat; keempat baris log sebelumnya tergantikan seluruhnya.