登录
首页 >  Golang >  Go问答

go中逐字节处理文件

来源:stackoverflow

时间:2024-04-12 18:24:29 401浏览 收藏

你在学习Golang相关的知识吗?本文《go中逐字节处理文件》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

与这个问题类似,在 go 中一次处理一个字节的文件的惯用方法是什么?

换句话说,有没有更好的方法来编写以下内容?

file, err := ioutil.ReadFile(filename)
file_string = string(file)
for i, c := range file_string {
    // -snip-
}

解决方案


您一次将整个文件作为字符串(而不是字节)读取,然后逐个符文(而不是逐个字节)对其进行处理。要一次一个字节地读取文件(这很可能不是您想要的),您必须完全这样做:

f, err := os.open("path")
if err != nil {
    panic(err)
}

b := make([]byte, 1)

for {
    err := f.read(b)
    if err != nil && !errors.is(err, io.eof) {
        fmt.println(err)
        break
    }

    // process the one byte b[0]

    if err != nil {
        // end of file
        break
    }
}

但是,您更可能想要的是有效地读取文件,并一次处理一个字节。为此,您应该使用 buffered reader

f, err := os.Open("path")
if err != nil {
    panic(err)
}

br := bufio.NewReader(f)

// infinite loop
for {

    b,err := br.ReadByte()

    if err != nil && !errors.Is(err, io.EOF) {
        fmt.Println(err)
        break
    }

    // process the one byte b

    if err != nil {
        // end of file
        break
    }
}

今天关于《go中逐字节处理文件》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>