猿问

阅读 io。大小未知的读取器在 golang 中将字节数组

我有一个文件(假设描述符被命名为)通过该方法打开,所以我想将其内容读入字节数组中。fileos.Open()

我假设方法是创建以后的

data := make([]byte, 10000000)

然后将内容读入其中

n, err := file.Read(data)

我的问题是,是否有一种更优雅/更习惯的方式来解决这个问题,因为通过事先不知道文件大小,我只是传递一个我估计在初始化bytes数组时会做的数字()。10000000


qq_遁去的一_1
浏览 117回答 2
2回答

郎朗坤

您可以使用(最高可达 Go 1.15)或(Go 1.16 及更高版本)软件包。有一个帮助器函数,可将整个文件读入字节切片。io/ioutilos// For Go 1.15 and lower:package mainimport "io/ioutil"func main() {    data, err := ioutil.ReadFile("path/to/my/file")}// For Go 1.16 and higher:package mainimport "os"func main() {    data, err := os.ReadFile("path/to/my/file")}在 Go 版本 1.16 中,由于兼容性原因,该函数仍然存在,但它已在 中复制。我假设只要Go有1.xx版本,它就会一直存在,因为兼容性承诺,所以你可以继续使用那个。io/ioutilosio/ioutil如果您有文件描述符或任何文件描述符,您也可以使用该软件包:io.Readerio/ioutilpackage mainimport (    "io/ioutil"    "os")func main() {    f, _ := os.Open("path/to/my/file")    data, err := ioutil.ReadAll(f)}

呼啦一阵风

是 的包装器,它使用预定大小“512”字节,随着读取循环而扩大。ioutil.ReadAll()io.ReadAll()您可以改用 中的大小。(*file.File).Stats().Size()一种更直接的方法是使用自动将文件转换为[]字节的方法。在将文件读入字节之前,它使用上述方法的大小创建 []字节。os.ReadFile()Stats().Size()
随时随地看视频慕课网APP

相关分类

Go
我要回答