我正在尝试使用Go找到一个从文件中读取前两个字节的好方法。
我当前目录中有一些.zip
个文件,与其他文件混合在一起。
我想遍历目录中的所有文件,并检查前两个字节是否包含正确的.zip
标识符,即50 4B
。
使用标准库完成此操作的好方法是什么,而不必阅读整个文件?
浏览我设法找到的io
包中的可用功能:
func LimitReader(r Reader, n int64) Reader
这似乎符合我的描述,它从Reader
读取(如何获得Reader
?)但在n
字节后停止。因为我对Go很新,所以我不确定如何去做。
答案 0 :(得分:5)
您可以通过打开文件来获取初始读者。对于2个字节,我不会使用LimitReader
。只需用io.ReadFull读取2个字节就更容易了。
r, err := os.Open(file)
if err != nil {
return err
}
defer r.Close()
var header [2]byte
n, err := io.ReadFull(r, header[:])
if err != nil {
return err
}
答案 1 :(得分:-1)
您也可以使用普通的旧 Read
方法:
package main
import "os"
func main() {
f, err := os.Open("a.go")
if err != nil {
panic(err)
}
defer f.Close()
b := make([]byte, 2)
f.Read(b)
os.Stdout.Write(append(b, '\n'))
}