GOÓïÑÔ³£ÓõÄÎļþ¶ÁÈ¡·½Ê½ -µçÄÔ×ÊÁÏ

µçÄÔ×ÊÁÏ Ê±¼ä£º2019-01-01 ÎÒҪͶ¸å
¡¾www.unjs.com - µçÄÔ×ÊÁÏ¡¿

    ÕâÆªÎÄÕÂÖ÷Òª½éÉÜÁËGOÓïÑÔ³£ÓõÄÎļþ¶ÁÈ¡·½Ê½,Éæ¼°Ò»´ÎÐÔ¶ÁÈ¡¡¢·Ö¿é¶ÁÈ¡ÓëÖðÐжÁÈ¡µÈ·½·¨,ÊǷdz£ÊµÓõļ¼ÇÉ,ÐèÒªµÄÅóÓÑ¿ÉÒԲο¼ÏÂ

    ±¾ÎÄʵÀý½²ÊöÁËGOÓïÑÔ³£ÓõÄÎļþ¶ÁÈ¡·½Ê½£¬

GOÓïÑÔ³£ÓõÄÎļþ¶ÁÈ¡·½Ê½

¡£·ÖÏí¸ø´ó¼Ò¹©´ó¼Ò²Î¿¼¡£¾ßÌå·ÖÎöÈçÏ£º

    Golang µÄÎļþ¶ÁÈ¡·½·¨ºÜ¶à£¬¸ÕÉÏÊÖʱ²»ÖªµÀÔõôѡÔñ£¬ËùÒÔÌùÔÚ´Ë´¦±ãºóËٲ顣

    Ò»´ÎÐÔ¶ÁÈ¡

    СÎļþÍÆ¼öÒ»´ÎÐÔ¶ÁÈ¡£¬ÕâÑù³ÌÐò¸ü¼òµ¥£¬¶øÇÒËÙ¶È×î¿ì¡£

    ´úÂëÈçÏÂ:

    func ReadAll(filePth string) ([]byte, error) {

    f, err := os.Open(filePth)

    if err != nil {

    return nil, err

    }

    return ioutil.ReadAll(f)

    }

    »¹Óиü¼Ó¼òµ¥µÄ·½·¨£¬ÎÒ¾­³£Ê¹ÓÃioutil.ReadFile(filePth)

    ·Ö¿é¶ÁÈ¡

    ¿ÉÔÚËٶȺÍÄÚ´æÕ¼ÓÃÖ®¼äÈ¡µÃºÜºÃµÄƽºâ¡£

    ´úÂëÈçÏÂ:

    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 Êdzɹ¦¶ÁÈ¡×Ö½ÚÊý

    if err != nil { //Óöµ½ÈκδíÎóÁ¢¼´·µ»Ø£¬²¢ºöÂÔ EOF ´íÎóÐÅÏ¢

    if err == io.EOF {

    return nil

    }

    return err

    }

    }

    return nil

    }

    func main() {

    ReadBlock("test.txt", 10000, processBlock)

    }

    ÖðÐжÁÈ¡

    ÖðÐжÁÈ¡ÓеÄʱºòÕæµÄºÜ·½±ã£¬ÐÔÄÜ¿ÉÄÜÂýһЩ£¬µ«ÊǽöÕ¼Óü«ÉÙµÄÄÚ´æ¿Õ¼ä£¬

µçÄÔ×ÊÁÏ

¡¶GOÓïÑÔ³£ÓõÄÎļþ¶ÁÈ¡·½Ê½¡·(https://www.unjs.com)¡£

    ´úÂëÈçÏÂ:

    package main

    import (

    "bufio"

    "io"

    "os"

    )

    func processLine(line []byte) {

    os.Stdout.Write(line)

    }

    func ReadLine(filePth string, hookfn func([]byte)) error {

    f, err := os.Open(filePth)

    if err != nil {

    return err

    }

    defer f.Close()

    bfRd := bufio.NewReader(f)

    for {

    line, err := bfRd.ReadBytes(¡®\n¡®)

    hookfn(line) //·ÅÔÚ´íÎó´¦ÀíÇ°Ãæ£¬¼´Ê¹·¢Éú´íÎó£¬Ò²»á´¦ÀíÒѾ­¶ÁÈ¡µ½µÄÊý¾Ý¡£

    if err != nil { //Óöµ½ÈκδíÎóÁ¢¼´·µ»Ø£¬²¢ºöÂÔ EOF ´íÎóÐÅÏ¢

    if err == io.EOF {

    return nil

    }

    return err

    }

    }

    return nil

    }

    func main() {

    ReadLine("test.txt", processLine)

    }

    Ï£Íû±¾ÎÄËùÊö¶Ô´ó¼ÒµÄGOÓïÑÔ³ÌÐòÉè¼ÆÓÐËù°ïÖú¡£

×îÐÂÎÄÕÂ