我已经找到了许多有关如何从.zip中提取 所有 文件的示例,但是我不知道如何在不迭代.zip文件中的所有文件的情况下提取单个文件。
Go中是否可以从.zip存档中提取单个文件,而无需遍历.zip文件中的所有文件?
例如,如果一个zip文件包含:
folder1/file1.txt folder1/file2.txt folder1/file3.txt folder2/file1.txt
我将只提取 folder2/file1.txt吗?
folder2/file1.txt
zip.Reader为您提供的归档文件的内容,这些文件作为 片 (的zip.File)。没有通过名称获取文件的帮助程序方法,您必须使用循环来遍历文件。您无需打开/提取文件,但是要按名称查找文件,则必须使用循环。
zip.Reader
zip.File
例如:
r, err := zip.OpenReader("testdata/readme.zip") if err != nil { log.Fatal(err) } defer r.Close() for _, f := range r.File { if f.Name != "folder2/file1.txt" { continue } // Found it, print its content to terminal: rc, err := f.Open() if err != nil { log.Fatal(err) } _, err = io.Copy(os.Stdout, rc) if err != nil { log.Fatal(err) } rc.Close() fmt.Println() break }