Golang 根据日期创建文件夹

在一些web应用中,往往会根据当前日期创建文件夹,来保存用户的文件等信息,比如

static/product/20170410/a.jpg
static/product/20170411/b.jpg

获取日期并创建文件夹这个过程中可能会遇到坑,比如创建的文件夹没有写入的权限,下面给出一段代码,可以解决这个问题


import (
    "os"
    "path/filepath"
    "time"
)

// CreateDateDir 根据当前日期来创建文件夹
func CreateDateDir(basePath string) string {
    folderName := time.Now().Format("20060102")
    folderPath := filepath.Join(basePath, folderName)
    if _, err := os.Stat(folderPath); os.IsNotExist(err) {
        // 必须分成两步
        // 先创建文件夹
        os.Mkdir(folderPath, 0777)
        // 再修改权限
        os.Chmod(folderPath, 0777)
    }
    return folderPath
}

http://studygolang.com/topics/33 这上面也有解决办法,一种就是上面的两步走,另一种就是利用修改掩码

import (
    "os"
    "path/filepath"
    "time"
    "syscall"
)

// CreateDateDir 根据当前日期来创建文件夹
func CreateDateDir(basePath string) string {
    folderName := time.Now().Format("20060102")
    folderPath := filepath.Join(basePath, folderName)
    if _, err := os.Stat(folderPath); os.IsNotExist(err) {
        oldMask := syscall.Umask(0)
        os.Mkdir(folderPath, os.ModePerm)
        syscall.Umask(oldMask)
    }
    return folderPath
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,253评论 19 139
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,703评论 9 468
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,503评论 25 709
  • 从今天起拒绝标题党。 在这个标题党泛滥的时代,真的无力去批判这些人了,从今天开始,拒绝看标题党的文章,拒绝回复无脑...
    讷于文阅读 209评论 0 1
  • 此时此刻的我,还有三个月即将十九岁。现在,我大二。不算步入社会,却开始明白这个世界的样子。 1.这个世界是看脸和...
    艾米栗狂想曲阅读 416评论 1 0