Sebagai bahasa pemrograman, Go memiliki banyak 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 cara 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 pustaka standar Go, digunakan untuk operasi input dan output yang di-buffer, karena itulah 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 dalam program Anda, Anda harus mengimpornya bersama paket lainnya.

instagram viewer
impor (
"fmt"
"bufio"
)

Anda mungkin mendengar ketika Anda mulai dengan Go bahwa itu datang dengan semua yang mungkin Anda butuhkan sebagai seorang programmer. Untuk komunikasi langsung dengan sistem operasi Anda, ada sebuah paket bernama 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 Unix, semuanya menggunakan gaya penanganan kesalahan Go, yang membuatnya mudah untuk membaca pesan kesalahan dan kode debug.

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_RDHANYA bendera), sementara 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 ini.
    Bendera Arti
    O_RDHANYA Membuka file dalam mode read-only
    O_WRONLY Membuka file dalam mode tulis-saja
    O_RDWR Membuka file dalam mode baca-tulis
    O_APPEND Menambahkan data ke file saat menulis
    O_BUAT 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 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. Membuka(), Dan Pindai() yang dalam hal ini, berjalan di a Pergi untuk putaran.

kemasan utama
impor (
"bufio"
"fmt"
"catatan"
"os"
)
/**
ISI DARI "testfile.txt" mengajukan.
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
*/
fungsi utama(){
file, err := os. Membuka("testfile.txt")
// metode lain menggunakan os. Membuka file()
// berkas, err = os. Membuka file("testfile.txt", os. O_RDONLY, 0644)
jika salah != nihil {
catatan.Fatal(berbuat salah)
}
menundamengajukan.Menutup()
fmt. Cetak("File berhasil dibuka. Sekarang membaca konten file baris demi baris:")
// membuat pemindai dari itu mengajukankemembacateksdari
pemindai := bufio. Pemindai Baru (file)
// pindai atau baca byte teks baris demi baris
untukpemindai.Pindai() {
fmt.Println(pemindai.Teks())
}
jika salah := pemindai. Berbuat salah(); salah != nihil {
catatan.Fatal(berbuat salah)
}
}

Ketika Anda menjalankan kode di atas dengan jalankan filename.go, ini menghasilkan output yang ditunjukkan di bawah ini:

Jika Anda hanya memasukkan nama file dan bukan jalur ke Membuka() atau Membuka file() fungsi untuk operasi baca, Go menganggap 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 yang membaca file. Dalam contoh ini, data ditulis ke yang sudah ada testfile.txt menggunakan O_WRONLY Dan O_APPEND bendera.

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

// tulis data keluaran ke file
file, err = os. OpenFile("testfile.txt", os. O_APPEND|os. O_SALAH, 0644)
jika salah!= nol {
catatan. Fatal (salah)
}
menunda mengajukan. Menutup()
fmt. Println("File berhasil dibuka, Sekarang bersiap untuk menulis data ke file...")
// buat objek Writer buffer untuk menulis data ke file
textWriter := bufio. Penulis Baru (file)
// tulis string ke buffer sebelum menyimpan file.
_, err = penulis teks. WriteString("-Ini adalah baru teks ditambahkan ke file.")
jika salah!= nol {
catatan. Fatal (salah)
}
textWriter. Menyiram()
fmt. Println("Data berhasil ditulis ke file...")

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 Mudah

Go memungkinkan Anda 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 situasinya, Anda dapat bereksperimen dengan berbagai tanda dan izin file yang tersedia untuk digunakan dengan Membuka file().