6
List all files (recursively) in a directory
source link: https://yourbasic.org/golang/list-files-in-directory/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
List all files (recursively) in a directory
yourbasic.org/golang
Directory listing
Use the ioutil.ReadDir
function in package io/ioutil
. It returns a sorted slice containing elements of type os.FileInfo
.
The code in this example prints a sorted list of all file names in the current directory.
files, err := ioutil.ReadDir(".")
if err != nil {
log.Fatal(err)
}
for _, f := range files {
fmt.Println(f.Name())
}
Example output:
dev
etc
tmp
usr
Visit all files and folders in a directory tree
Use the filepath.Walk
function in package path/filepath
.
- It walks a file tree calling a function of type
filepath.WalkFunc
for each file or directory in the tree, including the root. - The files are walked in lexical order.
- Symbolic links are not followed.
The code in this example lists the paths and sizes of all files and directories in the file tree rooted at the current directory.
err := filepath.Walk(".",
func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
fmt.Println(path, info.Size())
return nil
})
if err != nil {
log.Println(err)
}
Example output:
. 1644
dev 1644
dev/null 0
dev/random 0
dev/urandom 0
dev/zero 0
etc 1644
etc/group 116
etc/hosts 20
etc/passwd 0
etc/resolv.conf 0
tmp 548
usr 822
usr/local 822
usr/local/go 822
usr/local/go/lib 822
usr/local/go/lib/time 822
usr/local/go/lib/time/zoneinfo.zip 366776
Share:
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK