1. 判断文件/文件夹是否存在 + 获取文件大小等详细信息
用2个函数可以判定,只是第一个函数将会返回所有内容,文件为0kb也是存在的
1 读取文件内容
2 能返回更多关于文件的信息
package main import ( "fmt" "io/ioutil" "os" "path/filepath" "strconv" ) func main() { // 123转字符串后拼接为路径 fmt.Println(filepath.Join("/proc", strconv.Itoa(123),"111")) _, err := ioutil.ReadFile("./tt.php") if err != nil { fmt.Println("ioutil.ReadFile",err) } _, err = os.Stat("./tt.php") if err != nil { fmt.Println("os.Stat",err) } }
os.Stat
package main import ( "fmt" "os" ) func main() { fileinfo, err := os.Stat(`C:UsersAdministratorDesktopUninstallTool.zip`) if err != nil { panic(err) } fmt.Println(fileinfo.Name()) //获取文件名 fmt.Println(fileinfo.IsDir()) //判断是否是目录,返回bool类型 fmt.Println(fileinfo.ModTime()) //获取文件修改时间 fmt.Println(fileinfo.Mode()) fmt.Println(fileinfo.Size()) //获取文件大小 fmt.Println(fileinfo.Sys()) }
明显 os.Stat 还可以精准的判定文件夹是否存在
2. 动态创建目录结构
//CreateDateDir basePath是固定目录路径 func CreateDateDir(basePath string) (dirPath, dataString string) { folderName := time.Now().Format("2006-01-02") folderPath := filepath.Join(basePath, folderName) if _, err := os.Stat(folderPath); os.IsNotExist(err) { // 必须分成两步 // 先创建文件夹 os.Mkdir(folderPath, 0777) // 再修改权限 os.Chmod(folderPath, 0777) } return folderPath, folderName }