Đọc file và ghi file trong Golang – Cuongquach.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.
Contents
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() và 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/