簡體   English   中英

將未知大小的 io.Reader 讀取到 golang 中的字節數組中

[英]Reading an io.Reader of unknown size into bytes array in golang

我有一個通過os.Open()方法打開的文件(比如描述符名為file ),所以我想將其內容讀入字節數組。

我認為這種方法是創建后者

data := make([]byte, 10000000)

然后將內容讀入其中

n, err := file.Read(data)

我的問題是是否有更優雅/慣用的方式來解決這個問題,因為事先不知道文件大小,我只是傳遞了一個我估計在初始化字節數組時會做的數字( 10000000 )。

您可以使用io/ioutil package,它有一個助手 function 可以將整個文件讀入字節片。

package main

import "io/ioutil"

func main() {
    data, err := ioutil.ReadFile("path/to/my/file")
}

如果您有文件描述符或任何io.Reader ,您也可以使用io/ioutil package:

package main

import (
    "io/ioutil"
    "os"
)

func main() {
    f, _ := os.Open("path/to/my/file")
    data, err := ioutil.ReadAll(f)
}

ioutil.ReadAll()io.ReadAll() () 的包裝器,它使用預定大小的“512”字節,隨着讀取循環而擴大

您可以改為使用(*file.File).Stats().Size()的大小。

更直接的方法是使用os.ReadFile()自動文件轉換為 []byte 為您。 在將文件讀入字節之前,它會使用上面的Stats().Size()方法創建具有大小的 []byte。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM