Skip to content

archive/zip: Differentiate ReadDir result types #43872

@cugu

Description

@cugu

What version of Go are you using (go version)?

Current HEAD

$ go version
go version devel +cd99385ff4 Sat Jan 23 12:38:15 2021 +0000 darwin/amd64

What did you do?

reader, _ := zip.OpenReader("test.zip")
root, _ := reader.Open(".")
entries, _ := root.(fs.ReadDirFile).ReadDir(0)
for _, entry := range entries {
    fmt.Printf("%s: %T\n", entry.Name(), entry)
}

Results in:

folder: *zip.fileListEntry
folder: zip.headerFileInfo

I understand that you might want both results (s. #40354), so my question is:

Is there a good way to differentiate those internal types, if you just need one?

It escalates a little with fs.WalkDir:

reader, _ := zip.OpenReader("test.zip")
fs.WalkDir(reader, ".", func(path string, d fs.DirEntry, err error) error {
    fmt.Println(path)
    return nil
})
folder
folder/file.txt
folder/subfolder
folder/subfolder/subfile.txt
folder/subfolder/subsubfolder
folder/subfolder/subsubfolder/subsubfile.txt
folder/subfolder/subsubfolder
folder/subfolder/subsubfolder/subsubfile.txt
folder/subfolder
folder/subfolder/subfile.txt
folder/subfolder/subsubfolder
folder/subfolder/subsubfolder/subsubfile.txt
folder/subfolder/subsubfolder
folder/subfolder/subsubfolder/subsubfile.txt
folder
folder/file.txt
folder/subfolder
folder/subfolder/subfile.txt
folder/subfolder/subsubfolder
folder/subfolder/subsubfolder/subsubfile.txt
folder/subfolder/subsubfolder
folder/subfolder/subsubfolder/subsubfile.txt
folder/subfolder
folder/subfolder/subfile.txt
folder/subfolder/subsubfolder
folder/subfolder/subsubfolder/subsubfile.txt
folder/subfolder/subsubfolder
folder/subfolder/subsubfolder/subsubfile.txt

@rsc

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrozenDueToAgeNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions