go 通过流判断是否是zip
时间: 2023-07-12 18:50:34 浏览: 270
Arq备份的跨平台恢复_Go_Makefile_下载.zip
在Go语言中,可以使用`archive/zip`包来操作ZIP文件。如果要判断一个文件是否是ZIP文件,可以读取文件的前几个字节,判断其是否是ZIP文件的魔数。ZIP文件的魔数为`50 4B 03 04`。
以下是示例代码:
```go
package main
import (
"fmt"
"io"
"os"
)
func main() {
file, err := os.Open("example.zip")
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
// 读取文件前4个字节
header := make([]byte, 4)
_, err = io.ReadFull(file, header)
if err != nil {
fmt.Println(err)
return
}
// 判断是否为ZIP文件
if header[0] == 0x50 && header[1] == 0x4B && header[2] == 0x03 && header[3] == 0x04 {
fmt.Println("This is a ZIP file")
} else {
fmt.Println("This is not a ZIP file")
}
}
```
在上面的示例代码中,我们打开一个名为`example.zip`的文件,并读取其前4个字节。如果这4个字节的值为`50 4B 03 04`,则判断为ZIP文件,否则判断为非ZIP文件。
阅读全文