Bir programlama dili olarak Go, metin (.txt) dosyaları gibi dosyaları oluşturma, okuma ve yazma yeteneği dahil olmak üzere çok çeşitli yerleşik özelliklere sahiptir.
Dosyalar, modern dünyada günlük hayatımızın önemli bileşenleridir. Metin dosyaları, harici yazılım veya veritabanları kullanılmadan yapılandırılmış, insan tarafından okunabilen verileri depolamak için kullanışlıdır.
Go'da metin dosyalarını değiştirmeye nasıl başlayabileceğinizi merak ediyorsanız, bu makale tam size göre.
Go'daki bufio Paketi
bu bufio Go'nun standart kitaplığının bir parçası olan paket, arabelleğe alınan giriş ve çıkış işlemleri için kullanılır, bu nedenle adı. bu bufio paket üzerine kuruludur io. Okuyucu Ve io. yazar Go'nun standart paketlerinin çoğunun uygulanmasında yaygın olarak kullanılan arayüzler.
bu bufio paket, arabelleğe alma uygulayarak bir adım daha ileri gider ve metin verilerini içeren IO işlemleri için kullanışlı hale getirir.
kullanmak için bufio paketi programınızda, diğer paketlerle birlikte içe aktarmalısınız.
içe aktarmak (
"fmt"
"bufio"
)
Muhtemelen ne zaman duymuşsundur? Go ile başladı bir programcı olarak ihtiyaç duyabileceğiniz her şeyle birlikte gelir. İşletim sisteminizle doğrudan iletişim için adında bir paket var. işletim sistemi platformdan bağımsız işlevler sağlar.
bu işletim sistemi Ve bufio paketler, metin dosyası işlemeyi inanılmaz derecede basit hale getirir.
olmasına rağmen büyük çoğunluğu işletim sistemi paketin işlevleri Unix benzeridir, hepsi hata mesajlarını okumayı ve hata ayıklama kodunu kolaylaştıran Go hata işleme stilini kullanır.
Peki, Go'da metin içeren dosyaları nasıl değiştirirsiniz?
Bir Metin Dosyasından Veriler Nasıl Okunur?
Metin dosyalarından veri okumak için aramanız gerekir. işletim sistemi paketin Açık() okunacak dosyanın adını parametre olarak kabul eden işlev. Dosyayı almanın başka bir yöntemi de Açık dosya() işlev.
arasındaki en büyük fark Açık() Ve Açık dosya() bunların uygulanmasındadır. Açık() bir dosyayı salt okunur modda açar (ile SADECE O_RD bayrak), iken Açık dosya() üç parametreyi kabul ederek daha fazla esneklik sağlar:
- Dosya adı
- Dosya açma modu: Geçerli dosya açma modları aşağıdaki tabloda gösterilmektedir.
bayrak Anlam SADECE O_RD Dosyayı salt okunur modda açar O_YANLIŞ Dosyayı salt yazılır modunda açar O_RDWR Dosyayı okuma-yazma modunda açar O_APPEND Yazarken dosyaya veri ekler O_CREATE Hiçbiri yoksa yeni bir dosya oluşturur O_EXCL Dosyanın yalnızca mevcut değilse oluşturulması gerektiğini belirtmek için O_CREATE ile birlikte kullanılır O_SYNC Eşzamanlı G/Ç için dosyayı açar O_TRUNC Mümkünse dosyayı açarken kısaltın - Dosya izinleri: Aşağıdakilerle aynı Linux'ta dosya izin bitleri tüm kullanıcı türlerine okuma, yazma ve yürütme izinleri vermek için 0777 gibi dosya erişim kurallarını belirtmek için kullanılır.
Aşağıdaki kod, Go kullanarak bir metin dosyasından verilerin nasıl okunacağını gösterir. işletim sistemi. Açık(), Ve tarama() bu durumda, bir döngü için git.
paket ana
içe aktarmak (
"bufio"
"fmt"
"kayıt"
"işletim sistemi"
)
/**
İÇERİĞİ "testfile.txt" dosya.
lorem ipsum dolor sit amet
LOREM IPSUM DOLOR SİT AMET
Lorem ipsum dolor sit amet
Lorem Ipsum Dolor Sit Amet
LOREM iPSUM DOLOR SİT AMET
LOREM IPSUM DOLOR SiT AMET
*/
işlev ana(){
dosya, hata := işletim sistemi. Açık("testfile.txt")
// os kullanan başka bir yöntem. Açık dosya()
// dosya, hata = işletim sistemi. Açık dosya("testfile.txt", işletim sistemi. O_RDYALNIZCA, 0644)
eğer hata != sıfır {
kayıt.Ölümcül(hata)
}
ertelemekdosya.Kapalı()
fmt. Yazdır("Dosya başarıyla açıldı. Şimdi dosya içeriğini satır satır okuyoruz:")
// yaratmak tarayıcı itibaren the dosyaileOkumakmetinitibaren
tarayıcı := bufio. NewScanner (dosya)
// metin baytlarını satır satır tarayın veya okuyun
içintarayıcı.Tara() {
fmt.Yazdır(tarayıcı.Metin())
}
eğer hata := tarayıcı. hata(); hata != sıfır {
kayıt.Ölümcül(hata)
}
}
ile yukarıdaki kodu çalıştırdığınızda git filename.go'yu çalıştır, aşağıda gösterilen çıktıyı üretir:
Dosyanın yolunu değil de yalnızca dosya adını girerseniz Açık() veya Açık dosya() Okuma işlemleri için Go, dosyanın mevcut dizinde olduğunu varsayar ve bulamazsa bir hata verir. Geçerli dizinin dışındaki dosyalarla çalışmanız gerekiyorsa, dosyanın yolunu iletmelisiniz.
Metin Dosyasına Veri Yazma
bu bufio paket arabelleğe alınmış bir yazar baytlarca veri depolayan ve bunları bir dosyaya yazan arabirim. floş() işlev.
Bir sonraki örnek kod, bir dosyayı okumak için olanın devamıdır. Bu örnekte, veriler mevcut testfile.txt kullanmak O_YANLIŞ Ve O_APPEND bayraklar.
Aşağıdaki kod satırlarını yukarıdaki programa, kapatan kaşlı ayraçtan önce ekleyin. ana() işlev:
// çıktı verilerini dosyaya yaz
dosya, hata = işletim sistemi. OpenFile("testfile.txt", işletim sistemi. O_APPEND|os. O_YANLIŞ, 0644)
eğer hata!= sıfır {
kayıt. Ölümcül (hata)
}
ertelemek dosya. Kapalı()
fmt. Println("Dosya başarıyla açıldı, Şimdi dosyaya veri yazmaya hazırlanıyor...")
// dosyaya veri yazmak için ara belleğe alınmış Writer nesnesi yarat
textWriter := bufio. NewWriter (dosya)
// dosyayı kaydetmeden önce tampona dize yaz.
_, hata = textWriter. WriteString("-Bu bir yeni metin dosyaya eklendi.")
eğer hata!= sıfır {
kayıt. Ölümcül (hata)
}
metin Yazarı. floş()
fmt. Println("Veri başarıyla dosyaya yazıldı...")
Tam programınızın çıktısı şöyle görünmelidir:
açtığınızda testfile.txt dosyanın sonuna eklenmiş yeni satırı da aşağıdaki görüntüdeki gibi göreceksiniz:
Go'da Dosya İşleme Kolaydır
Go, yalnızca metin dosyalarıyla değil, çeşitli dosyalarla çalışmanıza olanak tanır. JSON ve CSV dahil olmak üzere dosyalardan farklı türde verilerle çalışmak için çok sayıda ek yerleşik kitaplık ve işlev vardır.
Duruma bağlı olarak nasıl farklı davrandıklarını görmek için, çeşitli işaretler ve dosya izinleri ile denemeler yapabilirsiniz. Açık dosya().