Cara Mengecek Keberadaan File di Go
Di Go, memeriksa apakah sebuah file ada adalah hal yang cukup umum. Misalnya saat aplikasi perlu membaca konfigurasi, menyimpan log, atau mengakses resource tertentu. Paket os
menyediakan cara sederhana untuk melakukannya. Mari kita bahas beberapa pendekatan, lengkap dengan kapan sebaiknya dipakai.
1. Menggunakan os.Stat
Fungsi os.Stat
sering dipakai untuk mengambil informasi file. Dari situ kita bisa tahu apakah file benar-benar ada.
package main
import (
"fmt"
"os"
)
func fileExists(filename string) bool {
_, err := os.Stat(filename)
return !os.IsNotExist(err)
}
func main() {
filename := "example.txt"
if fileExists(filename) {
fmt.Printf("File '%s' exists.\n", filename)
} else {
fmt.Printf("File '%s' does not exist.\n", filename)
}
}
2. Menangani Kasus Khusus
Kadang kita ingin lebih detail, misalnya membedakan antara file dan direktori, atau menangani error lain selain “file tidak ada”.
package main
import (
"fmt"
"os"
)
func fileExists(filename string) (bool, error) {
info, err := os.Stat(filename)
if err != nil {
if os.IsNotExist(err) {
return false, nil
}
return false, err
}
if info.IsDir() {
return false, fmt.Errorf("'%s' is a directory, not a file", filename)
}
return true, nil
}
3. Membuka File dengan os.Open
Alternatif lain adalah langsung mencoba membuka file. Kalau berhasil, berarti file ada.
package main
import (
"fmt"
"os"
)
func fileExists(filename string) bool {
file, err := os.Open(filename)
if err != nil {
if os.IsNotExist(err) {
return false
}
fmt.Println("Error:", err)
return false
}
file.Close()
return true
}
Best Practice Singkat
- Pakai
os.Stat
kalau cuma ingin tahu file ada atau tidak, atau butuh info tambahan (ukuran, apakah direktori, dsb.). Lebih ringan karena tidak membuka file. - Pakai
os.Open
kalau setelah pengecekan Anda memang akan membaca isi file. Jadi tidak perlu dua kali operasi I/O (cek dulu, lalu buka lagi). - Selalu cek error dengan benar. Jangan anggap semua error = file tidak ada. Bisa saja masalahnya adalah izin akses atau path yang invalid.
Kesimpulan
Go menyediakan beberapa cara untuk mengecek keberadaan file: lewat os.Stat
, dengan penanganan error lebih spesifik, atau langsung mencoba membuka file dengan os.Open
. Pilih cara yang sesuai kebutuhan—apakah hanya sekadar mengecek, atau memang ingin langsung mengakses isi file. Dengan begitu aplikasi Anda jadi lebih efisien dan lebih tahan terhadap error.