54 lines
2.4 KiB
Go
54 lines
2.4 KiB
Go
package godirwalk
|
|
|
|
// ReadDirents returns a sortable slice of pointers to Dirent structures, each
|
|
// representing the file system name and mode type for one of the immediate
|
|
// descendant of the specified directory. If the specified directory is a
|
|
// symbolic link, it will be resolved.
|
|
//
|
|
// If an optional scratch buffer is provided that is at least one page of
|
|
// memory, it will be used when reading directory entries from the file
|
|
// system. If you plan on calling this function in a loop, you will have
|
|
// significantly better performance if you allocate a scratch buffer and use it
|
|
// each time you call this function.
|
|
//
|
|
// children, err := godirwalk.ReadDirents(osDirname, nil)
|
|
// if err != nil {
|
|
// return nil, errors.Wrap(err, "cannot get list of directory children")
|
|
// }
|
|
// sort.Sort(children)
|
|
// for _, child := range children {
|
|
// fmt.Printf("%s %s\n", child.ModeType, child.Name)
|
|
// }
|
|
func ReadDirents(osDirname string, scratchBuffer []byte) (Dirents, error) {
|
|
return readDirents(osDirname, scratchBuffer)
|
|
}
|
|
|
|
// ReadDirnames returns a slice of strings, representing the immediate
|
|
// descendants of the specified directory. If the specified directory is a
|
|
// symbolic link, it will be resolved.
|
|
//
|
|
// If an optional scratch buffer is provided that is at least one page of
|
|
// memory, it will be used when reading directory entries from the file
|
|
// system. If you plan on calling this function in a loop, you will have
|
|
// significantly better performance if you allocate a scratch buffer and use it
|
|
// each time you call this function.
|
|
//
|
|
// Note that this function, depending on operating system, may or may not invoke
|
|
// the ReadDirents function, in order to prepare the list of immediate
|
|
// descendants. Therefore, if your program needs both the names and the file
|
|
// system mode types of descendants, it will always be faster to invoke
|
|
// ReadDirents directly, rather than calling this function, then looping over
|
|
// the results and calling os.Stat or os.LStat for each entry.
|
|
//
|
|
// children, err := godirwalk.ReadDirnames(osDirname, nil)
|
|
// if err != nil {
|
|
// return nil, errors.Wrap(err, "cannot get list of directory children")
|
|
// }
|
|
// sort.Strings(children)
|
|
// for _, child := range children {
|
|
// fmt.Printf("%s\n", child)
|
|
// }
|
|
func ReadDirnames(osDirname string, scratchBuffer []byte) ([]string, error) {
|
|
return readDirnames(osDirname, scratchBuffer)
|
|
}
|