如有帮助,欢迎留下足迹哦!
目录
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
}
// 如增加可执行权限
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-x
?? ?fmt.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")
?? ?}
}
?