gpt4 book ai didi

file - 从字节偏移量开始读取文件的一行,直到新行

转载 作者:IT王子 更新时间:2023-10-29 01:44:44 25 4
gpt4 key购买 nike

我正在使用 os.ReadAt() 读取 csv/tsv 文件中的某些行。但是,我不知道该行中有多少字节,我只需要读取从我指定的字节偏移量开始直到换行符的行。

buffer = make([]byte, 46)
os.ReadAt(buffer, 64) //Read at byte offset 64 and put contents in buffer

但是,这只允许我读取 46 字节的行。有没有办法读取整行直到换行?

谢谢

更新:

我只是创建了一个包含偏移量和线长的结构。应该在开始时就这样做了。我的错

最佳答案

一种方法是使用 bufio pkg。这方面的一个例子如下:

fd, err := os.Open("your_file.csv")
if err != nil { //error handler
log.Println(err)
return
}

reader := bufio.NewReader(fd) // creates a new reader

_, err = reader.Discard(64) // discard the following 64 bytes
if err != nil { // error handler
log.Println(err)
return
}

// use isPrefix if is needed, this example doesn't use it
// read line until a new line is found
line, _, err := reader.ReadLine()
if err != nil { // error handler
log.Println(err)
return
}
fmt.Println(string(line))

另一种读取行的方法,您可以使用fd.Seek(64,0) 跳转到特定字节,如

_, err = fd.Seek(64, 0)  // Set the current position for the fd
if err != nil { // error handler
log.Println(err)
return
}

然后使用阅读器阅读该行。

reader := bufio.NewReader(fd)

line, _, err := reader.ReadLine()
if err != nil {
log.Println(err)
return
}
fmt.Println(string(line))

关于file - 从字节偏移量开始读取文件的一行,直到新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44528935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com