猿问

如何解压单个文件?

我找到了很多有关如何从 .zip 中提取所有文件的示例,但我无法弄清楚如何在不迭代 .zip 文件中的所有文件的情况下提取单个文件。

Go 是否可以从 .zip 存档中提取单个文件,而无需迭代 .zip 文件中的所有文件?

例如,如果 zip 文件包含:

folder1/file1.txt
folder1/file2.txt
folder1/file3.txt
folder2/file1.txt

我该如何提取 folder2/file1.txt


慕桂英3389331
浏览 109回答 1
1回答

眼眸繁星

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}
随时随地看视频慕课网APP

相关分类

Go
我要回答