Apps Artificial Intelligence CSS DevOps Go JavaScript Laravel Linux MongoDB MySQL PHP Python Rust Vue

Cara Mengecek Keberadaan File di Go

1 min read .
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.

Lihat Juga

chevron-up