go–讀取檔案的方式

FIZLIN發表於2019-02-16
package main

import (
    "bufio"
    "fmt"
    "io"
    "io/ioutil"
    "os"
    "testing"
)

const fileName = "README.md"

//按照處理的位元組數讀取
func TestReadFilr(t *testing.T) {
    file, err := os.Open(fileName)
    if err != nil {
        t.Error(err)
    }
    buffer := make([]byte, 1024)
    for {
        if a, b := file.Read(buffer); a != 0 && b != io.EOF {
            fmt.Println(b)
        } else {
            return
        }
    }
}

// 一次性讀取
func TestReadFile2(t *testing.T) {
    if d, err := ioutil.ReadFile(fileName); err == nil {
        str := string(d)
        fmt.Println(str)
    } else {
        t.Error(err)
    }
}

//TestReadFileLBL line by line
func TestReadFileLBL(t *testing.T) {
    if file, err := os.Open(fileName); err == nil {
        buffer := bufio.NewScanner(file)
        position := 0
        for buffer.Scan() {
            desc := fmt.Sprintf("%d >> %s", position, buffer.Text())
            fmt.Println(desc)
        }
    }

}

相關文章