-- Go

Go ile Dosya Okuma ve Yazma İşlemleri

Merhabalar,

Uzun yıllardır C# ağırlıklı olmak üzere Java gibi bir kaç dil ve teknolojiyle bir çok farklı platformda uygulama geliştirmekte ve çoğu ile ilgili temel-ileri seviye eğitim/danışmanlık hizmeti vermekteyim. Ancak yeni dil ve teknolojilere olan ilgim bir hayli yüksektir! Ve eski teknolojinin gözünün yaşına bakmadan yenisiyle değiştirir, eskisiyle ilgili geliştirme ve Ar-Ge çalışmalarına da devam ederim.

Profesyonel olarak çalışmaya başladığım dillerden biri de Go programlama dilidir. Şimdi bu dille ilgili ilk örnek ve makale uygulamamı paylaşmak istiyorum.

Programlama Dili : Go (Golang)
Geliştirme Ortamı : Visual Studio Code

Go ile Dosya Oluşturma ve Dosyaya Yazma

package main

import (
    "fmt"
    "io"
    //"io/ioutil"
    "os"
    "bufio"
    "math/rand"
    "time"
    "strconv"
)

func main(){

    // Biz klavyeden girilen karakterleri content olarak alacağız.
    // Bu nedenle bu kısmı açıklama satırı olarak bıraktım.
    //content := "Merhaba GO!"

    // Klavyeden girilen veriyi elde edebilmek için projeye eklediğimiz bufio kütüphanesini kullanıyoruz.
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("************\n")
    fmt.Print("Metin: ")
    content, _ := reader.ReadString('\n')
    fmt.Print("************\n")

    // Dosya adında kullanmak üzere rastgele değerler üretiyoruz.
    r := random(99, 99999)
    // Üretilen rastgele değeri strconv olarak eklediğimiz kütüphanenin Itoa() metodu ile string'e dönüştürüyoruz.
    randNumber := strconv.Itoa(r)

    // Şu anın tarihini formatlayarak ekrana yaz.
    t := time.Now()
    fmt.Printf("İşlem zamanı : %d-%02d-%02d / %02d:%02d:%02d\n",
        t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second())

    // Dosyaya verilecek isim için adını ve uzantısını belirle.
    ext := ".txt"
    fileName := "./dummy-" + randNumber + ext

    // Dosyayı oluştur.
    file, err := os.Create(fileName)
    // Bir hata oluşursa err dolu gelecek, onu checkError() metoduna gönder.
    checkError(err)
    // Dosyayı serbest bırak.
    defer file.Close()

    // Oluşturulan dosyaya kullanıcıdan alınan metni yaz.
    ln, err := io.WriteString(file, content)
    checkError(err)

    fmt.Printf("Dosyada %v karakter var.", ln)

    // io.WriteString() yerine aşağıdaki açıklama satırlı alanı da kullanabilirsiniz.
    // Eğer bu yöntemi kullanırsanız import alanındaki "io/ioutil" açıklama satırlı alanı aktif etmelisiniz.
    // bytes := []byte(content)
    // ioutil.WriteFile(fileName, bytes, 0644)
    // Bir alt satıra in(newLine)
    fmt.Print("\n")
}

func random(min, max int) int {
    rand.Seed(time.Now().Unix())
    return rand.Intn(max - min) + min
}

func checkError(err error){
    if err != nil {
        panic(err)
    }
}

Dosyaya yazma işlemlerini mümkün olduğunca genişletmeye çalıştım. Özellikle yeni başlayanlar için bir işi yaparken birden fazla özellik anlatmakta yarar vardır.

Oluşturulan Dosyayı Okumak;

package main

import (
    "fmt"
    "io/ioutil"
)

func main(){

    // Okumak istediğiniz dosyanın adını girin.
    fileName := "./dummy.txt"

    content, err := ioutil.ReadFile(fileName)
    checkError(err)

    result := string(content)

    fmt.Printf("Okunan Veri: %v", result)

}

func checkError(err error){
    if err != nil{
        panic(err)
    }
}

Kaynak Kod: https://github.com/cihanozhan/GOFileReadAndWrite/

Umarım yararlı olmuştur.
İyi çalışmalar.

Yorumla

Yorum