package main import ( "bufio" "io" "os" ) func processBlock(line []byte) { os.Stdout.Write(line) } func ReadBlock(filePth string, bufSize int, hookfn func([]byte)) error { f, err := os.Open(filePth) if err != nil { return err } defer f.Close() buf := make([]byte, bufSize) //一次讀取多少個字節 bfRd := bufio.NewReader(f) for { n, err := bfRd.Read(buf) hookfn(buf[:n]) // n 是成功讀取字節數 if err != nil { //遇到任何錯誤立即返回,並忽略 EOF 錯誤信息 if err == io.EOF { return nil } return err } } return nil } func main() { bufsize := 1024 * 1024 ReadBlock("test.txt", bufsize, processBlock) }