第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何讀取文本文件?

如何讀取文本文件?

Go
不負(fù)相思意 2021-12-27 15:03:04
我正在嘗試讀取“file.txt”并使用 Golang 將內(nèi)容放入變量中。這是我嘗試過(guò)的...package mainimport (    "fmt"    "os"    "log")func main() {    file, err := os.Open("file.txt")    if err != nil {        log.Fatal(err)    }    fmt.Print(file)}文件被成功讀取并且從os.Open返回的返回類型為*os.File
查看完整描述

1 回答

?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

這取決于您要嘗試做什么。


file, err := os.Open("file.txt")

fmt.print(file)

它輸出 &{0xc082016240} 的原因是因?yàn)槟诖蛴∥募枋龇?( *os.File)的指針值,而不是文件內(nèi)容。要獲取文件內(nèi)容,您可以READ從文件描述符中獲取。


要將所有文件內(nèi)容(以字節(jié)為單位)讀取到內(nèi)存中, ioutil.ReadAll


package main


import (

    "fmt"

    "io/ioutil"

    "os"

    "log"

)


func main() {

    file, err := os.Open("file.txt")

    if err != nil {

        log.Fatal(err)

    }

    defer func() {

        if err = file.Close(); err != nil {

            log.Fatal(err)

        }

    }()



  b, err := ioutil.ReadAll(file)

  fmt.Print(b)

}

但有時(shí),如果文件很大,只讀取塊可能更節(jié)省內(nèi)存:緩沖區(qū)大小,因此您可以使用io.Reader.Readfrom的實(shí)現(xiàn)*os.File


func main() {

    file, err := os.Open("file.txt")

    if err != nil {

        log.Fatal(err)

    }

    defer func() {

        if err = file.Close(); err != nil {

            log.Fatal(err)

        }

    }()



    buf := make([]byte, 32*1024) // define your buffer size here.


    for {

        n, err := file.Read(buf)


        if n > 0 {

            fmt.Print(buf[:n]) // your read buffer.

        }


        if err == io.EOF {

            break

        }

        if err != nil {

            log.Printf("read %d bytes: %v", n, err)

            break

        }

    }


}

否則,您也可以使用標(biāo)準(zhǔn)的 util 包:bufio, try Scanner。AScanner在標(biāo)記中讀取您的文件:分隔符。


默認(rèn)情況下,掃描儀通過(guò)換行符推進(jìn)標(biāo)記(當(dāng)然,您可以自定義掃描儀如何標(biāo)記您的文件,從這里學(xué)習(xí)bufio 測(cè)試)。


package main


import (

    "fmt"

    "os"

    "log"

    "bufio"

)


func main() {

    file, err := os.Open("file.txt")

    if err != nil {

        log.Fatal(err)

    }

    defer func() {

        if err = file.Close(); err != nil {

            log.Fatal(err)

        }

    }()


    scanner := bufio.NewScanner(file)


    for scanner.Scan() {             // internally, it advances token based on sperator

        fmt.Println(scanner.Text())  // token in unicode-char

        fmt.Println(scanner.Bytes()) // token in bytes


    }

}

最后,我還想向您推薦這個(gè)很棒的網(wǎng)站:go-lang filecheatsheet。它幾乎涵蓋了與在 go-lang 中處理文件相關(guān)的所有內(nèi)容,希望您會(huì)發(fā)現(xiàn)它很有用。


查看完整回答
反對(duì) 回復(fù) 2021-12-27
  • 1 回答
  • 0 關(guān)注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)