[Go] Đọc file và ghi file trong Golang

Đọc file và ghi file trong GolangCuongquach.com | Hoạt động đọc dữ liệu từ file và ghi dữ liệu vào file là một trong những hoạt động cực kì phổ biến với các ứng dụng lập trình. Trong bài viết này chúng ta sẽ tìm hiểu cách sử dụng package golang “io/ioutil” để đọc/ghi các file với định dạng nội dung không xác định. Các file định dạng hay nội dung xác định như .csv, .xls, .. không nằm trong bài viết này.

doc-va-ghi-file-trong-golang

1. Đọc file trong Golang

Chúng ta sử dụng package “io/ioutil” (https://golang.org/pkg/io/ioutil/) hàm ioutil.ReadFile() với tham số truyền vào là đường dẫn file cần đọc. Hàm này sẽ trả về dữ liệu dữ liệu []byte của file và dữ liệu err để bạn có thể xử lý lỗi liên quan.

Cú pháp:

func ReadFile(filename string) ([]byte, error)

Ví dụ :

– Tạo một file text.

# cat << EOF > cuongquach.txt
This is example text from website cuongquach.com
EOF

– Giờ code file main.go để đọc nội dung file text này nhé.

package main
 
import (
    "fmt"
    "io/ioutil"
)
 
func main() {
    // Read content in file cuongquach.txt
    data, err := ioutil.ReadFile("cuongquach.txt")
    if err != nil {
        fmt.Println(err)
    }
 
    // If read file success, print content of file
    fmt.Print(string(data))
 
}

– Chạy file main.go .

# go run main.go
This is example text from website cuongquach.com

2. Ghi và tạo mới file trong Golang

Kế đến chúng ta tìm hiểu cách ghi nội dung vào file mới trong Golang. Trường hợp này nếu file chưa hiện hữu thì Golang code sẽ tạo file mới và ghi nội dung vào. Nếu file đã hiện hữu thì sẽ override nội dung của file bằng nội dung sẽ được ghi vào từ code.

Điều kiện ban đầu là bạn phải chuẩn bị một mảng byte biểu thị cho nội dung mà bạn muốn ghi vào file.

data := []byte("Welcome to website CuongQuach.com")

Sử dụng function ioutil.WriteFile() với 3 tham số đầu vào gồm :
– Path file
– Data cần ghi xuống file
– Phân quyền cho file trong trường hợp file không tồn tại.

Code sau sẽ tạo file cuongquach.txt và ghi nội dung vào file. Sau đó đọc nội dung file và hiển thị.

package main
 
import (
    "fmt"
    "io/ioutil"
)
 
func main() {
 
    data := []byte("Welcome to website CuongQuach.com")
 
 	// Write content to file
    err := ioutil.WriteFile("cuongquach.txt", mydata, 0777)
    if err != nil {
        fmt.Println(err)
    }
 
 	// Read content from file
    data, err := ioutil.ReadFile("cuongquach.txt")
    if err != nil {
        fmt.Println(err)
    }
 
    fmt.Print(string(data))
 
}

3. Ghi thêm nội dung vào file đang có sẵn

Ghi thêm nội dung (append) tức là file đã tồn tại và đang có nội dung. Bạn mong muốn ghi nội dung tiếp tục vào file mà không xoá nội dung đang có, tức thêm nội dung vào cuối file chẳng hạn.

Chúng ta sẽ kết hợp thêm package os và function os.Openfile()WriteString() để thêm data vào file nhé.

package main
 
import (
    "fmt"
    "io/ioutil"
    "os"
)
 
func main() {
 
    data := []byte("Welcome to website CuongQuach.com")
 
 	// Write content to file
    err := ioutil.WriteFile("cuongquach.txt", mydata, 0777)
    if err != nil {
        fmt.Println(err)
    }
 
 	// Read content from file
    data, err := ioutil.ReadFile("cuongquach.txt")
    if err != nil {
        fmt.Println(err)
    }
 
    fmt.Print(string(data))

    // Append content to file
    f, err := os.OpenFile("cuongquach.txt", os.O_APPEND|os.O_WRONLY, 0600)
    if err != nil {
        panic(err)
    }
    defer f.Close()
 
    if _, err = f.WriteString("New data come from example code CuongQuach\n"); err != nil {
        panic(err)
    }
}

Nguồn: https://cuongquach.com/

Previous article[Go] Định danh trống (Blank identifier) trong Golang
Next articleHướng dẫn bảo mật chế độ Single-User bằng mật khẩu trên Linux
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !