48 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			2.0 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.
 | |
| //
 | |
| //    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.
 | |
| //
 | |
| // 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 for each child.
 | |
| //
 | |
| //    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)
 | |
| }
 |