Go'da Dosya İşlemleri: Okuma, Yazma ve Hata Yönetimi

Go'da dosya işlemleri `os` ve `ioutil` paketleriyle basitleştirilmiş. Hata yönetimi Go'nun temel felsefesi olduğu için her işlemde kontrol etmek gerekir.

Basit bir dosya okuma işleminden başlayalım. `os.ReadFile()` fonksiyonu tüm dosyayı belleğe yükler:

1package main
2
3import (
4"fmt"
5"os"
6)
7
8func main() {
9data, err:= os.ReadFile("dosya.txt")
10if err!= nil {
11fmt.Println("Hata:", err)
12return
13}
14fmt.Println(string(data))
15}

Beklenen çıktı: dosya.txt'nin içeriği yazdırılır.

Dosya yazma işlemi `os.WriteFile()` ile yapılır:

1package main
2
3import (
4"os"
5)
6
7func main() {
8content:= []byte("Merhaba Go!\n")
9err:= os.WriteFile("cikti.txt", content, 0644)
10if err!= nil {
11panic(err)
12}
13}

Beklenen çıktı: cikti.txt dosyası oluşturulur ve "Merhaba Go!" yazılır.

Büyük dosyalarla çalışırken satır satır okumak daha verimli:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1package main
2
3import (
4"bufio"
5"fmt"
6"os"
7)
8
9func main() {
10dosya, err:= os.Open("buyuk.txt")
11if err!= nil {
12fmt.Println("Dosya açılamadı:", err)
13return
14}
15defer dosya.Close()
16
17scanner:= bufio.NewScanner(dosya)
18for scanner.Scan() {
19fmt.Println(scanner.Text())
20}
21
22if err:= scanner.Err(); err!= nil {
23fmt.Println("Tarama hatası:", err)
24}
25}

Beklenen çıktı: dosyanın her satırı ayrı ayrı yazdırılır.

Ek yazma işlemi (append) için dosyayı flag'ler ile açmak gerekir:

1package main
2
3import (
4"os"
5)
6
7func main() {
8dosya, err:= os.OpenFile("log.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
9if err!= nil {
10panic(err)
11}
12defer dosya.Close()
13
14dosya.WriteString("Yeni log satırı\n")
15}

Hata yönetiminde `defer` ve `Close()` çifti kritik. Dosyayı açtıktan hemen sonra `defer dosya.Close()` yazın, böylece fonksiyon çıkışında otomatik kapatılır. Hata olmasa bile kapatılması garanti edilir.

`os.O_APPEND` var olan dosyaya ekler, `os.O_CREATE` yoksa oluşturur, `os.O_WRONLY` sadece yazma modunda açar. İzinler (0644) Unix formatında verilir.

Sık yapılan hata: dosyayı kapatmadan başka işlem yapmak veya hata kontrolü atlamak. Go'da `err!= nil` kontrolü ihmal edilmemelidir.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz