如有帮助,欢迎留下足迹哦!
目录
创建文件
带权限创建或打开
创建目录(单级、多级)
检查给定路径(目录、文件)是否存在
将目录和文件名拼接成为完整文件路径
给定文件路径获取文件后缀
给定文件路径获取文件名及其上级目录
判断给定路径是文件还是目录
统计目录下的文件数量
获取给定目录下的所有文件(包括子文件夹下的所有子文件)
给文件加权限(chmod)
获取文件的权限、判断文件是否具有可执行权限
创建文件
file, err := os.Create(fileName)
带权限创建或打开
mode := os.FileMode(0644) | os.ModePerm// 注意:OpenFile默认以只读方式来打开文件,此时无需调用os.Create来创建。
// O_RDONLY为只读;O_CREATE为创建;O_WRONLY为只写;O_TRUNC为;打开并清空文件 模式可自选。
file, err := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, mode)
创建目录(单级、多级)
func CreateDir(dir string) (bool, error) {// 单级// os.Mkdir()// 多级if err := os.MkdirAll(dir, 0755); err != nil {return false, err}return true, nil
}
检查给定路径(目录、文件)是否存在
// 结果为true表示存在
func Exists(path string) bool {_, err := os.Stat(path)return err == nil
}
将目录和文件名拼接成为完整文件路径
filePath := filepath.Join("dir", "filename")
或
filePath := path.Join("dir", "filename")
区别是,前者自动基于操作系统来进行路径拼接,后者主要拼接通用的、与操作系统无关的路径格式。
注: linux下为/ windows下为反斜杠\
给定文件路径获取文件后缀
ext = filepath.Ext(respPayload.FilePath)
给定文件路径获取文件名及其上级目录
fileDir, fileName = filepath.Split(file)
判断给定路径是文件还是目录
// isDir=false表示是文件
func IsDir(path string) (isDir bool, err error) {f, err := os.Stat(path)if err != nil {return}if f.IsDir() {isDir = true}return
}
统计目录下的文件数量
func GetFileNumbers(folder string) (numbers int) {files, _ := ioutil.ReadDir(folder)for _, file := range files {if !file.IsDir() {numbers++}}return
}
获取给定目录下的所有文件(包括子文件夹下的所有子文件)
func GetFiles(folder string) (filesList []string) {files, _ := ioutil.ReadDir(folder)for _, file := range files {if file.IsDir() {GetFiles(folder + "/" + file.Name())} else {filesList = append(filesList, file.Name())}}return
}
给文件加权限(chmod)
// 如增加可执行权限
err := os.Chmod(fileName, os.FileMode(73))
获取文件的权限、判断文件是否具有可执行权限
func getAccess() {info, err := os.Stat("./a")if err != nil {return}mode := info.Mode() // 当前文件的权限// |493|111101101|-rwxr-xr-x|----------|false|true|fmt.Printf("|%d|%b|%v|%v|%v|%v|\n", mode, mode, mode.Perm(), mode.Type(), mode.IsDir(), mode.IsRegular())// -rwxr-xr-xfmt.Println(mode.String())// 是否有有可执行权限,相当于和–x–x–x进行按位与操作// 如果结果等于0111,说明文件对于所有者、组和其他用户都有执行权限。if mode.Perm()&0111 == 0111 { // 或 mode.Perm()&73 == os.FileMode(73)// 有可执行权限fmt.Println("can executable")} else {fmt.Println("no executable")}
}