package blefs import ( "path/filepath" "strings" ) func (blefs *FS) RemoveAll(path string) error { if path == "" { return nil } if filepath.Clean(path) == "/" { return ErrNoRemoveRoot } fi, err := blefs.Stat(path) if err != nil { return nil } if fi.IsDir() { return blefs.removeAllChildren(path) } else { err = blefs.Remove(path) if err != nil && err.(FSError).Code != -2 { return err } } return nil } func (blefs *FS) removeAllChildren(path string) error { list, err := blefs.ReadDir(path) if err != nil { return err } for _, entry := range list { if entry.IsDir() { err = blefs.removeAllChildren(filepath.Join(path, entry.Name())) } else { err = blefs.Remove(path) } if err != nil { return err } } return nil } func (blefs *FS) MkdirAll(path string) error { if path == "" || path == "/" { return nil } splitPath := strings.Split(path, "/") for i := 1; i < len(splitPath); i++ { curPath := strings.Join(splitPath[0:i], "/") err := blefs.Mkdir(curPath) if err != nil && err.(FSError).Code != -17 { return err } } return nil }