github.com/bobyang007/helper@v1.1.3/ioh/ioutilh/dir.go (about)

     1  package ioutilh
     2  
     3  import (
     4  	"io"
     5  	"os"
     6  	"sort"
     7  )
     8  
     9  // ReadDirNames reads the directory named by dirName and returns list of directory entries.
    10  // Result slice will be sorted if arrange is set to true.
    11  func ReadDirNames(dirName string, arrange bool) ([]string, error) {
    12  	f, err := os.Open(dirName)
    13  	if err != nil {
    14  		return nil, err
    15  	}
    16  	defer f.Close()
    17  
    18  	names, err := f.Readdirnames(-1)
    19  	if err != nil {
    20  		return nil, err
    21  	}
    22  
    23  	if arrange {
    24  		sort.Strings(names)
    25  	}
    26  	return names, nil
    27  }
    28  
    29  // IsDirEmpty checks if directory named by dirName is empty (has no child).
    30  func IsDirEmpty(dirName string) (bool, error) {
    31  	f, err := os.Open(dirName)
    32  	if err != nil {
    33  		return false, err
    34  	}
    35  	defer f.Close()
    36  
    37  	_, err = f.Readdir(1)
    38  	if err == io.EOF {
    39  		return true, nil
    40  	}
    41  	return false, err
    42  }