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

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

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

前言

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

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

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

使用 os 庫的 ReadFile() 可以把整個文件讀到內(nèi)存中,在日常開發(fā)中,這是讀文件使用頻率最多的方法,也是最基本一個函數(shù)。下面代碼展示了如何使用這個函數(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)文件過大時,讀取整個文件到內(nèi)存中會把內(nèi)存打爆,鑒于這種情況,我們可以把整個文件分成特定 chunks,也就是塊,然后分塊讀取,下面代碼展示了把 3 個 byte 組成一個 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 個 byte slice,每次讀取 3 個 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)存中

我們也可以按行分割整個文件,然后一行行讀取到內(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()

    // 以這個文件為參數(shù),創(chuàng)建一個 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() 讀文件最佳實踐的文章就介紹到這了,更多相關(guān)Golang讀文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

    go?打包運行文件在windows,liunx運行

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

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

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

    Golang中的path/filepath包用法

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

    Go 代碼生成工具詳解

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

    Go?container包的介紹

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

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

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

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

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

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

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

最新評論

滨海县| 延津县| 南乐县| 抚顺县| 台安县| 茂名市| 禄丰县| 修水县| 大渡口区| 九台市| 防城港市| 永宁县| 翼城县| 绥芬河市| 蒙阴县| 璧山县| 武陟县| 正镶白旗| 克东县| 扎赉特旗| 莎车县| 甘德县| 吴堡县| 周至县| 安康市| 博爱县| 平山县| 同心县| 高邮市| 盐亭县| 定陶县| 尼勒克县| 冕宁县| 通山县| 海盐县| 张家口市| 黄陵县| 六安市| 博湖县| 崇阳县| 丹巴县|