-
Notifications
You must be signed in to change notification settings - Fork 3
/
operation.go
80 lines (67 loc) · 2.03 KB
/
operation.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package fileKit
import (
"github.com/gogf/gf/v2/os/gfile"
"os"
"path/filepath"
"time"
)
var (
// Chmod 使用指定的权限,更改指定路径的文件权限.
Chmod func(path string, mode os.FileMode) (err error) = gfile.Chmod
// CutAndPaste 剪贴.
CutAndPaste func(src string, dst string) (err error) = gfile.Move
// Move 移动.
Move func(src string, dst string) (err error) = gfile.Move
// Rename 重命名.
Rename func(src string, dst string) (err error) = gfile.Move
// Remove 删除文件(或目录).
/*
PS: 如果是目录且内部有文件或目录,也会一并删除.
*/
Remove func(path string) (err error) = gfile.Remove
// Delete 删除文件(或目录).
Delete func(path string) (err error) = Remove
// Truncate 裁剪文件为指定大小.
/*
PS:
(1) 如果给定文件路径是软链,将会修改源文件;
(2) If there is an error, it will be of type *PathError.
@param size 如果为0,则清空文件内容
*/
Truncate func(path string, size int) (err error) = gfile.Truncate
)
// EmptyDir 清空目录:删掉目录中的文件和子目录(递归),但该目录本身不会被删掉.
/*
@param dirPath 可以不存在(此时将返回nil)
*/
func EmptyDir(dirPath string) error {
if !Exists(dirPath) {
return nil
}
if err := AssertExistAndIsDir(dirPath); err != nil {
return err
}
// 遍历目录
dirEntries, err := os.ReadDir(dirPath)
if err != nil {
return err
}
for _, dirEntry := range dirEntries {
path := filepath.Join(dirPath, dirEntry.Name())
if err := Remove(path); err != nil {
return err
}
}
return nil
}
// SetModificationTime 修改文件(或目录)的修改时间
/*
PS:
(1) 也会同时修改文件(或目录)的访问时间;
(2) 修改目录的修改时间,将不会影响该目录下的文件或目录;
(3) 传参t可以晚于当前时间.
@param path 传参""将返回error(chtimes : The system cannot find the path specified.)
*/
func SetModificationTime(path string, t time.Time) error {
return os.Chtimes(path, t, t)
}