佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > golang創(chuàng)建文件目錄os.Mkdir,os.MkdirAll的區(qū)別說明

golang創(chuàng)建文件目錄os.Mkdir,os.MkdirAll的區(qū)別說明

熱門標簽:呼叫中心市場需求 地方門戶網(wǎng)站 網(wǎng)站排名優(yōu)化 Linux服務(wù)器 服務(wù)外包 AI電銷 百度競價排名 鐵路電話系統(tǒng)

如下所示:

 os.Mkdir("abc", os.ModePerm)  //創(chuàng)建目錄 
 os.MkdirAll("dir1/dir2/dir3", os.ModePerm) //創(chuàng)建多級目錄 

首先,試圖從一個Go可執(zhí)行文件創(chuàng)建一組嵌套目錄(如'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 用于創(chuàng)建單個目錄。

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

初次創(chuàng)建dir1時成功,再次創(chuàng)建dir1時,如果path已經(jīng)是一個目錄,Mkdir會報錯

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

根據(jù)日期創(chuàng)建文件夾

import (
 "os"
 "path/filepath"
 "time"
)
// CreateDateDir 根據(jù)當(dāng)前日期來創(chuàng)建文件夾
func CreateDateDir(Path string) string {
 folderName := time.Now().Format("20060102")
 folderPath := filepath.Join(Path, folderName)
 if _, err := os.Stat(folderPath); os.IsNotExist(err) {
 // 必須分成兩步:先創(chuàng)建文件夾、再修改權(quán)限
 os.Mkdir(folderPath, 0777) //0777也可以os.ModePerm
 os.Chmod(folderPath, 0777)
 }
 return folderPath
}

創(chuàng)建文件夾路徑,請使用os.MkdirAll(folderPath,os.ModePerm)

err=os.MkdirAll("./dir1/dir2",os.ModePerm)
if err!=nil{
 fmt.Println(err)
 }
err為nil
成功創(chuàng)建dir1/dir2文件路徑

MkdirAll會創(chuàng)建一個名為path的目錄以及任何必要的父項,并返回nil,否則返回錯誤。許可位perm用于MkdirAll創(chuàng)建的所有目錄。如果path已經(jīng)是一個目錄,MkdirAll什么也不做,并返回nil。

根據(jù)日期創(chuàng)建文件夾路徑

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

其他os包中的一些常用函數(shù):

os.Getwd() //獲取當(dāng)前目錄

創(chuàng)建文件

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

以讀寫方式打開文件,如果不存在則創(chuàng)建文件,等同于上面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") \\結(jié)果是D:\test.txt

刪除指定目錄下所有文件

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

刪除指定目錄

os.RemoveAll("abc")

重命名文件

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

如有不對歡迎指正,相互學(xué)習(xí),共同進步。

補充:go創(chuàng)建文件帶目錄

我就廢話不多說了,大家還是直接看代碼吧~

// 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)
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Golang 并發(fā)以及通道的使用方式
  • golang 如何替換掉字符串里面的換行符\n
  • golang 中的 nil的場景分析
  • 基于golang uint8、int8與byte的區(qū)別說明
  • 解決golang gin框架跨域及注解的問題
  • 手把手教你vscode配置golang開發(fā)環(huán)境的步驟
  • Golang Printf,Sprintf,Fprintf 格式化詳解

標簽:湖南 仙桃 衡水 湘潭 崇左 黃山 蘭州 銅川

巨人網(wǎng)絡(luò)通訊聲明:本文標題《golang創(chuàng)建文件目錄os.Mkdir,os.MkdirAll的區(qū)別說明》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    台南市| 沿河| 河南省| 江孜县| 武穴市| 通化市| 莫力| 唐河县| 怀远县| 莎车县| 雷波县| 大港区| 宁强县| 隆昌县| 大丰市| 沅陵县| 永仁县| 福安市| 龙川县| 石泉县| 敦煌市| 大同县| 九龙城区| 固安县| 塘沽区| 湟源县| 陕西省| 阿合奇县| 昌吉市| 金昌市| 泉州市| 竹北市| 图片| 宣恩县| 五大连池市| 金沙县| 新密市| 滦平县| 烟台市| 兰考县| 华容县|