Berkas uji coba, hasil ekspor sementara, dan file kerja aplikasi tidak sebaiknya memenuhi folder proyek. Setiap sistem operasi menyediakan folder khusus untuk data sementara — /tmp pada Linux, %TEMP% pada Windows — dan .NET mengeksposnya lewat Path.GetTempPath. Isi folder ini dianggap sekali pakai; sistem operasi atau administrator bebas membersihkannya kapan saja, sehingga data penting tidak boleh disimpan di sana.
Tiga Bantuan dari .NET #
| API | Perilaku |
|---|---|
Path.GetTempPath() | mengembalikan lokasi folder sementara sebagai string |
Path.GetTempFileName() | membuat berkosong berkas 0 byte bernama unik, lalu mengembalikan path-nya |
Directory.CreateTempSubdirectory(prefix) | membuat folder unik berawalan prefix (.NET 7+), mengembalikan DirectoryInfo |
Perbedaan penting: GetTempFileName benar-benar membuat berkas di disk, sedangkan CreateTempSubdirectory membuat folder yang terjamin unik berkat akhiran acak. Keduanya wajib dihapus oleh program kita sendiri setelah selesai dipakai, karena tidak ada jaminan sistem operasi membersihkannya dengan segera.
Contoh Membuat dan Membersihkan #
Contoh berikut membuat berkas temporer, mengisinya, menghapusnya, lalu membuat dan menghapus folder temporer berawalan:
Console.WriteLine($"Folder temporer: {Path.GetTempPath()}");
string fileTemp = Path.GetTempFileName();
Console.WriteLine($"Ukuran awal: {new FileInfo(fileTemp).Length} byte");
File.WriteAllText(fileTemp, "data sementara");
Console.WriteLine($"Setelah ditulis: {new FileInfo(fileTemp).Length} byte");
File.Delete(fileTemp);
DirectoryInfo folderKerja = Directory.CreateTempSubdirectory("tutor-");
Console.WriteLine($"Folder unik dibuat: {folderKerja.Exists}");
Console.WriteLine($"Berawalan 'tutor-': {folderKerja.Name.StartsWith("tutor-")}");
folderKerja.Delete(recursive: true);Output yang Dihasilkan:
Folder temporer: /tmp/
Ukuran awal: 0 byte
Setelah ditulis: 14 byte
Folder unik dibuat: True
Berawalan 'tutor-': TrueMari kita bedah baris demi baris:
Path.GetTempPath(): mengembalikan/tmp/pada Linux; pada Windows hasilnya berupa jalur folder%TEMP%pengguna.Path.GetTempFileName(): membuat berkas 0 byte dengan nama unik berpolatmpXXXX.tmp, sekaligus mengembalikan path lengkapnya.WriteAllTextdanDelete: berkas diisi 14 byte lalu dibersihkan oleh program sendiri, tanpa menunggu sistem operasi.Directory.CreateTempSubdirectory("tutor-"): membuat folder unik berawalantutor-;Delete(recursive: true)menghapusnya beserta seluruh isinya.