| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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)
- }
|