Go語(yǔ)言編程中判斷文件是否存在是創(chuàng)建目錄的方法
判斷文件是否存在
os.IsExists()函數(shù)和os.IsNotExists(),他們的函數(shù)的原形是func IsExist(err error) bool func IsNotExist(err error) bool 都是傳入一個(gè)err返回bool 這里注意了 err已經(jīng)定義好了
/*
var (
ErrInvalid = errors.New("invalid argument")
ErrPermission = errors.New("permission denied")
ErrExist = errors.New("file already exists")
ErrNotExist = errors.New("file does not exist")
)
*/
這里我們看到了errors這個(gè)包,那我們講一下這個(gè)包,這個(gè)包就一個(gè)方法就是errors.New()函數(shù)原形是func New(text string) error實(shí)例代碼
import (
"errors"
"fmt"
)
func main() {
//這里就一個(gè)方法func New(text string) error 我們可以自己定義
err := errors.New("widuu blog only golang")
if err != nil {
fmt.Println(err) //這里就是輸出了我們自己定義的錯(cuò)誤信息 //widuu blog only golang
}
}
下面通過(guò)實(shí)例代碼講解一下
import (
"fmt"
"os"
)
func main() {
_, err := os.Open("widuu.go")
if err != nil {
fmt.Println(os.IsNotExist(err)) //true 證明文件已經(jīng)存在
fmt.Println(err) //open widuu.go: no such file or directory
}
//這個(gè)時(shí)候你可以這樣判斷文件是否存在
f, err := os.Open("widuu.go")
if err != nil && os.IsNotExist(err) {
fmt.Println(f, "文件不存在") //為什么打印nil 是這樣的如果file不存在 返回f文件的指針是nil的 所以我們不能使用defer f.Close()會(huì)報(bào)錯(cuò)的
}
//我們弄出一個(gè)文件已經(jīng)存在的錯(cuò)誤來(lái)實(shí)驗(yàn)os.IsExists() 如下是Os定義的常量
/*
var (
ErrInvalid = errors.New("invalid argument")
ErrPermission = errors.New("permission denied")
ErrExist = errors.New("file already exists")
ErrNotExist = errors.New("file does not exist")
)
*/
fmt.Println(os.IsExist(os.ErrExist)) //這里就會(huì)輸出true
//我們后邊馬上提到link
err = os.Link("osexists.go", "1.go")
if err != nil {
fmt.Println(os.IsExist(err)) //因?yàn)槲?.go這個(gè)文件存在了 所以說(shuō)返回true
}
}
創(chuàng)建目錄
os.Mkdir創(chuàng)建單個(gè)目錄函數(shù)原形func Mkdir(name string, perm FileMode) error輸入一個(gè)目錄的名稱(chēng)和目錄的權(quán)限,我們可以用默認(rèn)的os.ModePerm然后返回的是一個(gè)error的信息,我們看下,也一塊復(fù)習(xí)前邊的一點(diǎn)知識(shí)
import (
"fmt"
"os"
)
func main() {
var path string
if os.IsPathSeparator('\\') { //前邊的判斷是否是系統(tǒng)的分隔符
path = "\\"
} else {
path = "/"
}
fmt.Println(path)
dir, _ := os.Getwd() //當(dāng)前的目錄
err := os.Mkdir(dir+path+"md", os.ModePerm) //在當(dāng)前目錄下生成md目錄
if err != nil {
fmt.Println(err)
}
fmt.Println("創(chuàng)建目錄" + dir + path + "md成功")
}
os.MkdirAll()函數(shù)原形是func MkdirAll(path string, perm FileMode) error輸入的是多級(jí)目錄結(jié)構(gòu)和權(quán)限返回的是error的信息
import (
"fmt"
"os"
)
func main() {
dir, _ := os.Getwd()
err := os.MkdirAll(dir+"/a/b/c", os.ModePerm) //生成多級(jí)目錄
if err != nil {
fmt.Println(err)
}
fmt.Println("創(chuàng)建文件夾" + dir + "/a/b/c成功")
}
相關(guān)文章
Go語(yǔ)言的http/2服務(wù)器功能及客戶(hù)端使用
Golang 有一個(gè)很棒的自帶 http 服務(wù)器軟件包,不用說(shuō)就是: net/http, 它非常簡(jiǎn)單,但是功能非常強(qiáng)大。下面這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言的http/2服務(wù)器功能及客戶(hù)端使用的相關(guān)資料,需要的朋友可以參考下2018-09-09
Go Gin框架中的binding驗(yàn)證器使用小結(jié)
Gin框架中的binding驗(yàn)證器為我們提供了簡(jiǎn)便的數(shù)據(jù)綁定和驗(yàn)證功能,通過(guò)合理使用binding和validate標(biāo)簽,我們可以確保API接口的數(shù)據(jù)合法性和完整性,這篇文章主要介紹了Go Gin框架中的binding驗(yàn)證器使用指南,需要的朋友可以參考下2024-07-07
Go語(yǔ)言defer語(yǔ)句的三種機(jī)制整理
在本篇文章里小編給大家分享的是一篇關(guān)于Go語(yǔ)言defer語(yǔ)句的三種機(jī)制整理,需要的朋友們學(xué)習(xí)下吧。2020-03-03
Golang正整數(shù)指定規(guī)則排序算法問(wèn)題分析
這篇文章主要介紹了Golang正整數(shù)指定規(guī)則排序算法問(wèn)題,結(jié)合實(shí)例形式分析了Go語(yǔ)言排序算法操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01
CentOS7使用yum安裝Golang的超詳細(xì)步驟
CentOS默認(rèn)并沒(méi)有安裝golang運(yùn)行環(huán)境,下面這篇文章主要給大家介紹了關(guān)于CentOS7使用yum安裝Golang的超詳細(xì)步驟,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02

