golang文件系统常用方法

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
}
原文地址:https://www.cnblogs.com/xuweiqiang/p/14008686.html