golang创建文件目录os.Mkdir,os.MkdirAll的区别说明

如下所示:

 os.Mkdir("abc", os.ModePerm)  //创建目录
 os.MkdirAll("dir1/dir2/dir3", os.ModePerm) //创建多级目录 

首先,试图从一个Go可执行文件创建一组嵌套目录(如'dir1/dir2/dir3'),并打印错误出来看看。

err:=os.Mkdir(“dir1/dir2/dir3”,os.ModePerm)
if err!=nil{
 fmt.Println(err)
}
result:mkdir ./dir1/dir2/dir3: The system cannot find the path specified.

Mkdir 用于创建单个目录。

err:=os.Mkdir("./dir1",os.ModePerm)
if err!=nil{
 fmt.Println(err)
}

初次创建dir1时成功,再次创建dir1时,如果path已经是一个目录,Mkdir会报错

mkdir ./dir1: Cannot create a file when that file already exists.

根据日期创建文件夹

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

创建文件夹路径,请使用os.MkdirAll(folderPath,os.ModePerm)

err=os.MkdirAll("./dir1/dir2",os.ModePerm)
if err!=nil{
 fmt.Println(err)
 }
err为nil
成功创建dir1/dir2文件路径

MkdirAll会创建一个名为path的目录以及任何必要的父项,并返回nil,否则返回错误。许可位perm用于MkdirAll创建的所有目录。如果path已经是一个目录,MkdirAll什么也不做,并返回nil。

根据日期创建文件夹路径

uploadDir := "static/upload/" + time.Now().Format("2006/01/02/")
err := os.MkdirAll( uploadDir , 777)

其他os包中的一些常用函数:

os.Getwd() //获取当前目录

创建文件

f1, _ := os.Create("./1.txt")
defer f1.Close()

以读写方式打开文件,如果不存在则创建文件,等同于上面os.Create

f4, _ := os.OpenFile("./4.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666)
defer f4.Close()

用os.path.join()连接两个文件名地址的时候,就比如

os.path.join("D:\","test.txt") \\结果是D:\test.txt

删除指定目录下所有文件

os.Remove("abc/d/e/f")

删除指定目录

os.RemoveAll("abc")

重命名文件

os.Rename("./2.txt", "./2_new.txt")

如有不对欢迎指正,相互学习,共同进步。

补充:go创建文件带目录

我就废话不多说了,大家还是直接看代码吧~

// create file with dir if dir is not exist
// path is dir
// name is file name
func createFileWithDir(path string, name string, content string) {
 os.MkdirAll(path, os.ModePerm)
 file, _ := os.OpenFile(path + "/" + name, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666)
 defer file.Close()
 file.WriteString(content)
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 详解golang中发送http请求的几种常见情况

    方式一 使用http.Newrequest 先生成http.client -> 再生成 http.request -> 之后提交请求:client.Do(request) -> 处理返回结果,每一步的过程都可以设置一些具体的参数,下面是一个最朴素最基本的例子: //question ???将stdout重定向为response信息??? package main import ( "fmt" "io" "net/http" &q

  • 浅谈Golang是如何读取文件内容的(7种)

    本文旨在快速介绍Go标准库中读取文件的许多选项. 在Go中(就此而言,大多数底层语言和某些动态语言(如Node))返回字节流. 不将所有内容自动转换为字符串的好处是,其中之一是避免昂贵的字符串分配,这会增加GC压力. 为了使本文更加简单,我将使用string(arrayOfBytes)将bytes数组转换为字符串. 但是,在发布生产代码时,不应将其作为一般建议. 1.读取整个文件到内存中 首先,标准库提供了多种功能和实用程序来读取文件数据.我们将从os软件包中提供的基本情况开始.这意味着两个先决

  • Golang 如何判断数组某个元素是否存在(isset)

    如,现在需要判断命令行是否传了参数,即 os.Args[1] 是否存在 如果使用下述的判断: package main import ( "fmt" "os" ) func main() { if os.Args[1] != "" { fmt.Println("aaa") } else { fmt.Println("bbb") } } 会报错: index out of range panic: runti

  • golang创建文件目录os.Mkdir,os.MkdirAll的区别说明

    如下所示: os.Mkdir("abc", os.ModePerm) //创建目录 os.MkdirAll("dir1/dir2/dir3", os.ModePerm) //创建多级目录 首先,试图从一个Go可执行文件创建一组嵌套目录(如'dir1/dir2/dir3'),并打印错误出来看看. err:=os.Mkdir("dir1/dir2/dir3",os.ModePerm) if err!=nil{ fmt.Println(err) } r

  • python文件目录操作之os模块

    一.os函数目录 1 os.access(path, mode) 检验权限模式 2 os.chdir(path) 改变当前工作目录 3 os.chflags(path, flags) 设置路径的标记为数字标记. 4 os.chmod(path, mode) 更改权限 5 os.chown(path, uid, gid) 更改文件所有者 6 os.chroot(path) 改变当前进程的根目录 7 os.close(fd) 关闭文件描述符 fd 8 os.closerange(fd_low, fd

  • 对python中的 os.mkdir和os.mkdirs详解

    创建目录 在Python中可以使用os.mkdir()函数创建目录(创建一级目录). 其原型如下所示: os.mkdir(path) 其参数path 为要创建目录的路径. 例如要在D盘下创建hello的目录 >>> import os >>> os.mkdir('d:\hello') 可以使用os.makedirs()函数创建多级目录. 其原型如下所示: os.makedirs(path) 其参数path 为要创建目录的路径. 如在D盘下创建books的目录,books

  • 解决python os.mkdir创建目录失败的问题

    起因 今天使用 python os.mkdir创建目录时遇到的一个小问题: feature_dir = os.path.join(os.getcwd(), 'system', 'feature') if not os.path.exists(feature_dir): os.mkdir(feature_dir) 结果提示错误: OSError: [Errno 2] No such file or directory: '/home/hyb/hyb_speech/2_word/applicatio

  • Python os.mkdir()与os.makedirs()的使用区别

    os.makedir(path)和os.makedirs(path) 今天工作中将hadoop文件同步到服务器磁盘,由于文件类别目录较多,迁移文件时需要判断是否存在 这里有两个方法os.mkdir(path)和os.makedirs(path) os.mkdir(path) 他的功能是一级一级的创建目录,前提是前面的目录已存在,如果不存在会报异常,比较麻烦,但是存在即有他的道理,当你的目录是根据文件名动态创建的时候,你会发现他虽然繁琐但是很有保障,不会因为你的一时手抖,创建而创建了双层或者多层错

  • python中os和sys模块的区别与常用方法总结

    前言 本文主要介绍了关于python中os和sys模块区别与常用方法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 官方解释: os: This module provides a portable way of using operating system dependent functionality. 翻译:提供一种方便的使用操作系统函数的方法. sys:This module provides access to some variables used or

  • python 中os模块os.path.exists()的用法说明

    os即operating system(操作系统),Python 的 os 模块封装了常见的文件和目录操作. os.path模块主要用于文件的属性获取,exists是"存在"的意思,所以顾名思义,os.path.exists()就是判断括号里的文件是否存在的意思,括号内的可以是文件路径. 举个栗子: user.py为存在于当前目录的一个文件 输入代码: import os path = os.path.exists('user.py') print(path) 输出结果: True P

  • Python os和os.path模块详情

    1.目的:在Python中实现只读取扩展名为xlsx的文件 解决方法: 使用os模块. 解决思路: 1.确定目录 2.循环遍历每一个文件 3.筛选符合条件的文件,读取数据 具体代码如下: import os # 1.首先定义路径 filepath = 'E:/old/工作/数据库表' # 2.循环遍历路径下的每一个文件 for filename in os.listdir(filepath):     # 3.列出文件中以.xlsx结尾的文件     if filename.endswith((

  • 如何使用Golang创建与读取Excel文件

    目录 摘要 引言 正文 架构 文件对象 数据的表示 数据的解析 实际架构 Excelize 基础库 文件 坐标 样式 单元格操作 数据验证 数据的表示和解析 表示 解析 大规模数据的写入 需要关注的问题 大量枚举值的设置 大工作表的读取 流式写入的注意事项 结语 参考资料 总结 摘要 本文提出一种使用 Golang 进行 Excel 文件创建和读取的方案.首先对问题进行分析,引出方案的基本架构:然后分章节描述了 Excelize 基础库的基本用法,以及 Excel 数据在 Golang 中的表示

  • 两种方式创建docker镜像的启动容器时区别介绍(总结篇)

    Docker是建立在Linux内核基础上的,在目前的主流Linux系统中,都已经原生支持了Docker且使用体验也最好,当然,在Windows平台和MacOS系统中也支持Docker,只是需要使用类似Boot2Docker等虚拟化工具来提供Linux支持. 下面重点给大家介绍基于两种创建docker镜像的启动容器时区别,感兴趣的朋友可以跟着小编一起学习! 1.凡是用docker commit生成的镜像启动的时候可以加载一个启动自己应用的脚本,例如: docker run -d -P tomcat

随机推荐