golang 读取文件
1、以块的形式读取文件
package main
import (
"io"
"os"
"fmt"
)
const BufferSize = 100
func main() {
file, err := os.Open("filetoread.txt")
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
buffer := make([]byte, BufferSize)
for {
bytesread, err := file.Read(buffer)
if err != nil {
if err != io.EOF {
fmt.Println(err)
}
break
}
fmt.Println("bytes read: ", bytesread)
fmt.Println("bytestream to string: ", string(buffer[:bytesread]))
}
}
2、逐行读取文件
package main
import (
"bufio"
"fmt"
"io"
"os"
"strings"
)
func ReadLine(fileName string, handler func(string)) error {
f, err := os.Open(fileName)
if err != nil {
return err
}
buf := bufio.NewReader(f)
for {
line, err := buf.ReadString('\n')
line = strings.TrimSpace(line)
handler(line)
if err != nil {
if err == io.EOF {
return nil
}
return err
}
}
return nil
}
func Print(line string) {
fmt.Println(line)
}
func main() {
ReadLine("test.txt", Print)
}
3、一次性读取 package main import "fmt" import "io/ioutil" func main() { b, e := ioutil.ReadFile("d:/goTest/123.txt") if e != nil { fmt.Println("read file error") return } fmt.Println(string(b)) }