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('
')
        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))
    }
原文地址:https://www.cnblogs.com/forgo/p/15090494.html