data, err := os.ReadFile("filename.txt")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(data))
方式1:bufio.NewScanner
file, err := os.Open("filename.txt")
if err != nil {
panic(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
方式2:bufio.NewReader
file, err := os.Open("filename.txt")
if err != nil {
panic(err)
}
defer file.Close()
reader:= bufio.NewReader(file)
for {
line, _, err := reader.ReadLine()
if err == io.EOF {
break
}
fmt.Println(string(line))
}
区别是bufio.Scanner
还可自定义扫描的分隔符,如:
file, _ := os.Open("filename.txt")
scanner := bufio.NewScanner(file)
//scanner.Split(bufio.ScanLines) // 按行读,是默认读取方式
//scanner.Split(bufio.ScanWords) // 按单词读,返回文本中每个以空格分隔的单词,并删除周围的空格
//scanner.Split(bufio.ScanBytes) // 按字节读
//scanner.Split(bufio.ScanRunes) // 按 UTF-8 编码的字符读,如:中文字符
for scanner.Scan() {
println(scanner.Text())
}
bufio.Reader
的 Read
方法,能读取指定长度的字节到一个切片中package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.Open("filename.txt")
if err != nil {
fmt.