首頁 > 編程 > Golang > 正文

            Go語言編程中判斷文件是否存在是創(chuàng)建目錄的方法

            2020-04-01 19:25:39
            字體:
            供稿:網(wǎng)友
            這篇文章主要介紹了Go語言編程中判斷文件是否存在是創(chuàng)建目錄的方法,示例都是使用os包下的函數(shù),需要的朋友可以參考下
             

            判斷文件是否存在
            os.IsExists()函數(shù)和os.IsNotExists(),他們的函數(shù)的原形是func IsExist(err error) bool func IsNotExist(err error) bool 都是傳入一個err返回bool 這里注意了 err已經(jīng)定義好了

            復(fù)制代碼代碼如下:

              /*
             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這個包,那我們講一下這個包,這個包就一個方法就是errors.New()函數(shù)原形是func New(text string) error實例代碼
            復(fù)制代碼代碼如下:

            import (
             "errors"
             "fmt"
            )

             

            func main() {
             //這里就一個方法func New(text string) error 我們可以自己定義
             err := errors.New("widuu blog only golang")
             if err != nil {
              fmt.Println(err) //這里就是輸出了我們自己定義的錯誤信息 //widuu blog only golang
             }
            }


            下面通過實例代碼講解一下
            復(fù)制代碼代碼如下:

              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
             }

             //這個時候你可以這樣判斷文件是否存在

             f, err := os.Open("widuu.go")
             if err != nil && os.IsNotExist(err) {
              fmt.Println(f, "文件不存在") //為什么打印nil 是這樣的如果file不存在 返回f文件的指針是nil的 所以我們不能使用defer f.Close()會報錯的
             }

            //我們弄出一個文件已經(jīng)存在的錯誤來實驗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)) //這里就會輸出true
             //我們后邊馬上提到link
             err = os.Link("osexists.go", "1.go")
             if err != nil {
              fmt.Println(os.IsExist(err))  //因為我1.go這個文件存在了 所以說返回true
             }
            }

             


            創(chuàng)建目錄
            os.Mkdir創(chuàng)建單個目錄函數(shù)原形func Mkdir(name string, perm FileMode) error輸入一個目錄的名稱和目錄的權(quán)限,我們可以用默認(rèn)的os.ModePerm然后返回的是一個error的信息,我們看下,也一塊復(fù)習(xí)前邊的一點知識

            復(fù)制代碼代碼如下:

             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輸入的是多級目錄結(jié)構(gòu)和權(quán)限返回的是error的信息
            復(fù)制代碼代碼如下:

            import (
             "fmt"
             "os"
            )

             

            func main() {
             dir, _ := os.Getwd()
             err := os.MkdirAll(dir+"/a/b/c", os.ModePerm)  //生成多級目錄
             if err != nil {
              fmt.Println(err)
             }
             fmt.Println("創(chuàng)建文件夾" + dir + "/a/b/c成功")
            }


            發(fā)表評論 共有條評論
            用戶名: 密碼:
            驗證碼: 匿名發(fā)表