最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang?使用os?庫的?ReadFile()?讀文件最佳實(shí)踐

 更新時(shí)間:2022年09月26日 11:20:43   作者:二牛QAQ  
這篇文章主要介紹了Golang使用os庫的ReadFile()讀文件最佳實(shí)踐,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

前言

在 Go 中,os 庫的 ReadFile() 方法經(jīng)常用作讀文件,相比其他這個(gè)方法很方便,無需關(guān)心 close 文件等一些工作。

下面列出三種常見的讀文件場景:

1. 讀取整個(gè)文件到內(nèi)存中

使用 os 庫的 ReadFile() 可以把整個(gè)文件讀到內(nèi)存中,在日常開發(fā)中,這是讀文件使用頻率最多的方法,也是最基本一個(gè)函數(shù)。下面代碼展示了如何使用這個(gè)函數(shù)。

package main

import (
   "log"
   "os"
)

func main() {
   data, err := os.ReadFile("./file.txt")
   if err != nil {
      log.Fatalf("File reading error: %v", err)
   }
   log.Printf("Contents of file: %s", string(data))
}

2. 讀取特定字節(jié)數(shù)據(jù)到內(nèi)存中

當(dāng)文件過大時(shí),讀取整個(gè)文件到內(nèi)存中會(huì)把內(nèi)存打爆,鑒于這種情況,我們可以把整個(gè)文件分成特定 chunks,也就是塊,然后分塊讀取,下面代碼展示了把 3 個(gè) byte 組成一個(gè) chunk,然后再讀取。

package main

import (
   "bufio"
   "io"
   "log"
   "os"
)
func main() {
   f, err := os.Open("./file.txt")
   if err != nil {
      log.Fatal(err)
   }
   defer f.Close()

   // 初始化 reader 讀文件
   r := bufio.NewReader(f)
   // 初始化 3 個(gè) byte slice,每次讀取 3 個(gè) byte
   b := make([]byte, 3)
   // 循環(huán)讀取,直到讀到文件的結(jié)尾,
   for {
      n, err := r.Read(b)
      if err == io.EOF {
         break
      }
      if err != nil {
         log.Fatalf("Error reading file: %v", err)
         break
      }
      log.Printf("the Content is: %s", string(b[0:n]))
   }
}

3. 按行讀取文件到內(nèi)存中

我們也可以按行分割整個(gè)文件,然后一行行讀取到內(nèi)存中,這種方法也可以減少內(nèi)存的壓力

package main

import (
    "bufio"
    "log"
    "os"
)

func main() {
    f, err := os.Open("./file.txt")
    if err != nil {
        log.Fatal(err)
    }

    defer f.Close()

    // 以這個(gè)文件為參數(shù),創(chuàng)建一個(gè) scanner
    s := bufio.NewScanner(f)
    // 掃描每行文件,按行讀取
    for s.Scan() {
        log.Printf("the Content is: %s", s.Text())
    }
    err = s.Err()
    if err != nil {
        log.Fatal(err)
    }
}

到此這篇關(guān)于Golang 使用os 庫的 ReadFile() 讀文件最佳實(shí)踐的文章就介紹到這了,更多相關(guān)Golang讀文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于Go你不得不知道的一些實(shí)用小技巧

    關(guān)于Go你不得不知道的一些實(shí)用小技巧

    開發(fā)語言上Go成為高并發(fā)業(yè)務(wù)開發(fā)的主流語言,再加上云原生技術(shù)底座的驅(qū)動(dòng),Go語言風(fēng)光無限,下面這篇文章主要給大家介紹了關(guān)于Go你不得不知道的一些實(shí)用小技巧,需要的朋友可以參考下
    2022-11-11
  • Go語言defer的一些神奇規(guī)則示例詳解

    Go語言defer的一些神奇規(guī)則示例詳解

    這篇文章主要為大家介紹了Go語言defer的一些神奇規(guī)則示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • go?打包運(yùn)行文件在windows,liunx運(yùn)行

    go?打包運(yùn)行文件在windows,liunx運(yùn)行

    這篇文章主要介紹了go?打包運(yùn)行文件在windows,liunx運(yùn)行的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • golang變量uint、int大小溢出后的結(jié)果方式

    golang變量uint、int大小溢出后的結(jié)果方式

    在Go語言中,變量的大小溢出后,`uint`類型會(huì)回繞到最小值,而`int`類型會(huì)回繞到最大值的相反數(shù),例如,`uint8`溢出后會(huì)變成0,`int64`溢出后會(huì)變成最小的負(fù)數(shù)
    2024-12-12
  • Golang中的path/filepath包用法

    Golang中的path/filepath包用法

    這篇文章主要介紹了Golang中的path/filepath包用法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go 代碼生成工具詳解

    Go 代碼生成工具詳解

    這篇文章主要介紹了Go 代碼生成工具詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Go?container包的介紹

    Go?container包的介紹

    這篇文章主要介紹了Go?container包,go語言container包中有List和Element容器ist和Element都是結(jié)構(gòu)體類型。結(jié)構(gòu)體類型有一個(gè)特點(diǎn),那就是它們的零值都會(huì)是擁有其特定結(jié)構(gòu),但沒有任何定制化內(nèi)容的值,相當(dāng)于一個(gè)空殼,下面一起進(jìn)文章來了解具體內(nèi)容吧
    2021-12-12
  • Golang中時(shí)間格式化的實(shí)現(xiàn)詳解

    Golang中時(shí)間格式化的實(shí)現(xiàn)詳解

    這篇文章主要為大家詳細(xì)介紹了Go語言中進(jìn)行時(shí)間進(jìn)行格式化的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-09-09
  • Go 代碼規(guī)范錯(cuò)誤處理示例經(jīng)驗(yàn)總結(jié)

    Go 代碼規(guī)范錯(cuò)誤處理示例經(jīng)驗(yàn)總結(jié)

    這篇文章主要為大家介紹了Go 代碼規(guī)范錯(cuò)誤處理示例實(shí)戰(zhàn)經(jīng)驗(yàn)總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 詳解Gotorch多機(jī)定時(shí)任務(wù)管理系統(tǒng)

    詳解Gotorch多機(jī)定時(shí)任務(wù)管理系統(tǒng)

    遵循著“學(xué)一門語言最好的方式是使用它”的理念,想著用Go來實(shí)現(xiàn)些什么,剛好有一個(gè)比較讓我煩惱的問題,于是用Go解決一下,即使不在生產(chǎn)環(huán)境使用,也可以作為Go語言學(xué)習(xí)的一種方式。
    2021-05-05

最新評論

汾阳市| 大关县| 宜川县| 志丹县| 富宁县| 布尔津县| 哈密市| 河津市| 九江县| 佳木斯市| 黎平县| 定西市| 驻马店市| 邵东县| 义乌市| 延安市| 景东| SHOW| 上思县| 阳泉市| 和静县| 商南县| 离岛区| 柳河县| 菏泽市| 贡觉县| 桃源县| 铜陵市| 左权县| 凤凰县| 邢台县| 吉木乃县| 海伦市| 天峨县| 沁源县| 山西省| 全椒县| 馆陶县| 鹤庆县| 嘉荫县| 大渡口区|