Nó phụ thuộc vào những gì bạn đang cố gắng làm.
file, err := os.Open("file.txt")
fmt.print(file)
Lý do nó ra & {0xc082016240}, là bởi vì bạn đang in giá trị con trỏ của một tập tin mô tả (*os.File
), không nộp-nội dung. Để lấy nội dung tệp, bạn có thể READ
từ bộ mô tả tệp.
Để đọc toàn bộ nội dung tập tin (theo byte) vào bộ nhớ, ioutil.ReadAll
package main
import (
"fmt"
"os"
"log"
)
func main() {
file, err := os.Open("file.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
b, err := ioutil.ReadAll(file)
fmt.Print(b)
}
Nhưng đôi khi, nếu kích thước tập tin là lớn, nó có thể là nhiều bộ nhớ hiệu quả để chỉ cần đọc trong khối: đệm kích thước, do đó bạn có thể sử dụng thi hành io.Reader.Read
từ *os.File
func main() {
file, err := os.Open("file.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
buf := make([]byte, 32*1024) // define your buffer size here.
for {
n, err := file.Read(buf)
if n > 0 {
fmt.Print(buf[:n]) // your read buffer.
}
if err == io.EOF {
break
}
if err != nil {
log.Printf("read %d bytes: %v", n, err)
break
}
}
}
Nếu không, bạn cũng có thể sử dụng gói tiêu chuẩn util: bufio
, hãy thử Scanner
. A Scanner
đọc tệp của bạn trong mã thông báo: dấu phân cách.
Theo mặc định, máy quét tiến hành mã thông báo bằng dòng mới (tất nhiên bạn có thể tùy chỉnh cách máy quét mã hóa tệp của bạn, tìm hiểu từ đây the bufio test).
package main
import (
"fmt"
"os"
"log"
"bufio"
)
func main() {
file, err := os.Open("file.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() { // internally, it advances token based on sperator
fmt.Println(scanner.Text()) // token in unicode-char
fmt.Println(scanner.Bytes()) // token in bytes
}
}
Cuối cùng, tôi cũng muốn giới thiệu bạn đến trang web tuyệt vời này: go-lang file cheatsheet. Nó bao gồm khá nhiều thứ liên quan đến việc làm việc với các tệp tin trong go-lang, hy vọng bạn sẽ thấy nó hữu ích.
Kết quả của hàm trên kết quả đầu ra & {} 0xc082016240 – Acidic
có thể trùng lặp của [Làm thế nào tôi có thể đọc một tập tin toàn bộ vào một biến chuỗi trong golang?] (Http://stackoverflow.com/questions/13514184/ how-can-i-read-a-whole-file-in-a-string-biến-trong-golang) –