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:\Users\Administrator\Desktop\UninstallTool.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
}