Skip to content

Instantly share code, notes, and snippets.

@xiocode
Created November 6, 2019 08:59
Show Gist options
  • Save xiocode/7adc7c94d1ca9eb65ee745c038b4ae70 to your computer and use it in GitHub Desktop.
Save xiocode/7adc7c94d1ca9eb65ee745c038b4ae70 to your computer and use it in GitHub Desktop.
package segment
import (
"errors"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"sync"
)
func DeleteDir(filedir string) error {
var w sync.WaitGroup
filelist, err := ioutil.ReadDir(filedir)
if err != nil {
return err
}
for _, value := range filelist {
if value.IsDir() {
w.Add(1)
go func(name string) {
defer w.Done()
DeleteDir(filepath.Join(filedir, name))
}(value.Name())
} else {
w.Add(1)
go func(name string) {
defer w.Done()
DeleteFile(filepath.Join(filedir, name))
}(value.Name())
}
}
w.Wait()
err = os.Remove(filedir)
if err != nil {
fmt.Printf("remove file error : %s \n", err.Error())
}
return err
}
func DeleteDirAll(filedir string) error {
if IsDir(filedir) {
err := DeleteDir(filedir)
if err != nil {
fmt.Printf("delete dir failed : %s \n", err.Error())
return err
}
return nil
} else {
return DeleteFile(filedir)
}
}
func DeleteFile(filename string) error {
if IsExist(filename) {
return os.Remove(filename)
}
return errors.New("file not exist")
}
func IsDir(filename string) bool {
fi, err := os.Stat(filename)
if err != nil {
return false
}
if fi == nil {
return false
}
if fi.IsDir() {
return true
}
return false
}
func IsExist(filename string) bool {
fi, err := os.Stat(filename)
if err != nil {
fmt.Printf("file path not exist : %s \n", err.Error())
return false
}
if fi != nil {
return true
}
return false
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment