Panduan untuk Bekerja Dengan File Teks di Go

Sebagai bahasa pemrograman, Go memiliki berbagai fitur bawaan, termasuk kemampuan untuk membuat, membaca, dan menulis file seperti file teks (.txt).


File adalah komponen penting dari kehidupan kita sehari-hari di dunia modern. File teks berguna untuk menyimpan data terstruktur yang dapat dibaca manusia tanpa menggunakan perangkat lunak atau database eksternal.

Jika Anda bertanya-tanya bagaimana Anda bisa mulai memanipulasi file teks di Go, artikel ini adalah tempat yang tepat untuk Anda.


Paket bufio di Go

Itu bufio package, yang merupakan bagian dari library standar Go, digunakan untuk operasi input dan output buffer, oleh karena itu namanya. Itu bufio paket dibangun di atas io.Pembaca dan io.Penulis antarmuka, yang banyak digunakan dalam implementasi sebagian besar paket standar Go.

Itu bufio package melangkah lebih jauh dengan mengimplementasikan buffering, membuatnya berguna untuk operasi IO yang melibatkan data tekstual.

Untuk menggunakan bufio paket di program Anda, Anda harus mengimpornya bersama paket lain.

import (
"fmt"
"bufio"
)

Anda mungkin pernah mendengar ketika Anda memulai dengan Go bahwa ia datang dengan segala sesuatu yang mungkin Anda butuhkan sebagai seorang programmer. Untuk komunikasi langsung dengan sistem operasi Anda, ada paket yang disebut os yang menyediakan fungsi platform-independen.

Itu os dan bufio paket membuat manipulasi file teks menjadi sangat sederhana.

Meskipun sebagian besar dari os fungsi paket mirip dengan Unix, semuanya menggunakan gaya penanganan kesalahan Go, yang membuatnya mudah untuk membaca pesan kesalahan dan kode debug.

See also  6 Kerangka Kerja Terbaik untuk Pengembangan Aplikasi Hibrida

Jadi, bagaimana Anda memanipulasi file yang berisi teks di Go?

Cara Membaca Data Dari File Teks

Untuk membaca data dari file teks, Anda perlu memanggil os paket Membuka() fungsi, yang menerima nama file untuk dibaca sebagai parameter. Metode lain untuk mendapatkan file adalah dengan menggunakan Membuka file() fungsi.

Perbedaan utama antara Membuka() dan Membuka file() ada dalam pelaksanaannya. Membuka() membuka file dalam mode read-only (dengan O_RDONLY bendera), sedangkan Membuka file() memberikan lebih banyak fleksibilitas dengan menerima tiga parameter yaitu:

  • Nama file
  • Mode buka file: Mode buka file yang valid ditunjukkan pada tabel di bawah.
    Bendera Arti
    O_RDONLY Membuka file dalam mode hanya baca
    O_SALAH Membuka file dalam mode hanya-tulis
    O_RDWR Membuka file dalam mode baca-tulis
    O_APPEND Menambahkan data ke file saat menulis
    O_CREATE Membuat file baru jika tidak ada
    O_EXCL Digunakan dengan O_CREATE, untuk menunjukkan bahwa file hanya boleh dibuat jika tidak ada
    O_SYNC Membuka file untuk I/O sinkron
    O_TRUNC Potong file saat terbuka, jika memungkinkan
  • Izin file: Sama seperti bit izin file di Linux yang digunakan untuk menentukan aturan akses file, misalnya, 0777 untuk memberikan izin baca, tulis, dan eksekusi untuk semua jenis pengguna.

Kode di bawah ini menunjukkan cara membaca data dari file teks di Go menggunakan os.Buka()dan Pindai() yang dalam hal ini, berjalan dalam loop Go for.

package main
import (
"bufio"
"fmt"
"log"
"os"
)
/**
CONTENT OF THE "testfile.txt" file.
lorem ipsum dolor sit amet
LOREM IPSUM DOLOR SIT AMET
Lorem ipsum dolor sit amet
Lorem Ipsum Dolor Sit Amet
lOREM iPSUM dOLOR sIT aMET
LoReM IpSuM DoLoR SiT AmEt
*/
func main() {
file, err := os.Open("testfile.txt")
// file, err = os.OpenFile("testfile.txt", os.O_RDONLY, 0644)
if err != nil {
log.Fatal(err)
}
defer file.Close()
fmt.Println("File opened successfully. Now reading file contents line by line:")
// create scanner from the file to read text from
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
}

Saat Anda menjalankan kode di atas dengan jalankan nama file.goitu menghasilkan output yang ditunjukkan di bawah ini:

See also  KDE Plasma 5.26 Mempesona Dengan Widget Baru, Peningkatan Desktop

Jika Anda hanya memasukkan nama file dan bukan jalur ke Membuka() atau Membuka file() fungsi untuk operasi baca, Go mengasumsikan file ada di direktori saat ini dan mengembalikan kesalahan jika tidak menemukannya. Anda harus meneruskan jalur ke file jika Anda perlu bekerja dengan file di luar direktori saat ini.

Cara Menulis Data ke File Teks

Itu bufio paket menyediakan buffered Penulis antarmuka yang menyimpan byte data dan menulisnya ke file dengan bantuan a Menyiram() fungsi.

Kode sampel berikutnya adalah kelanjutan dari kode untuk membaca file. Dalam contoh ini, data ditulis ke yang ada testfile.txt menggunakan O_SALAH dan O_APPEND bendera.

Tambahkan baris kode berikut ke program di atas, sebelum kurung kurawal penutup dari utama() fungsi:


file, err = os.OpenFile("testfile.txt", os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
log.Fatal(err)
}
defer file.Close()
fmt.Println("File opened successfully, Now preparing to write data to file...")
textWriter := bufio.NewWriter(file)
_, err = textWriter.WriteString("-This is a new text added to the file.")
if err != nil {
log.Fatal(err)
}
textWriter.Flush()
fmt.Println("Data written to file successfully...")

Output dari program lengkap Anda akan terlihat seperti ini:

Ketika Anda membuka testfile.txt file, Anda juga akan melihat baris baru ditambahkan di akhir file seperti gambar di bawah ini:

Penanganan File di Go Itu Mudah

Go memungkinkan Anda untuk bekerja dengan berbagai file, bukan hanya file teks. Ada banyak pustaka dan fungsi bawaan tambahan untuk bekerja dengan berbagai jenis data dari file, termasuk JSON dan CSV.

Untuk melihat bagaimana mereka berperilaku berbeda tergantung pada situasi, Anda dapat bereksperimen dengan berbagai tanda dan izin file yang tersedia untuk digunakan dengan Membuka file().

See also  9 Tempat Terbaik untuk Membeli Musik Secara On-line