1. <th id="osa2k"><track id="osa2k"></track></th>
        <rp id="osa2k"><strike id="osa2k"><u id="osa2k"></u></strike></rp>
        首頁 > 編程 > Golang > 正文

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

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

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

        復制代碼代碼如下:

          /*
         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()函數原形是func New(text string) error實例代碼
        復制代碼代碼如下:

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


        下面通過實例代碼講解一下
        復制代碼代碼如下:

          import (
         "fmt"
         "os"
        )

         

        func main() {
         _, err := os.Open("widuu.go")
         if err != nil {
          fmt.Println(os.IsNotExist(err)) //true  證明文件已經存在
          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()會報錯的
         }

        //我們弄出一個文件已經存在的錯誤來實驗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
         }
        }

         


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

        復制代碼代碼如下:

         import (
         "fmt"
         "os"
        )

         

        func main() {
         var path string
         if os.IsPathSeparator('//') {  //前邊的判斷是否是系統的分隔符
          path = "//"
         } else {
          path = "/"
         }
         fmt.Println(path)
         dir, _ := os.Getwd()  //當前的目錄
         err := os.Mkdir(dir+path+"md", os.ModePerm)  //在當前目錄下生成md目錄
         if err != nil {
          fmt.Println(err)
         }
         fmt.Println("創建目錄" + dir + path + "md成功")
        }


        os.MkdirAll()函數原形是func MkdirAll(path string, perm FileMode) error輸入的是多級目錄結構和權限返回的是error的信息
        復制代碼代碼如下:

        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("創建文件夾" + dir + "/a/b/c成功")
        }


        發表評論 共有條評論
        用戶名: 密碼:
        驗證碼: 匿名發表
        亚洲性爱高潮视频_夜夜爽一区二区三区精品_亚洲国产第一福利一区二区_久久精品亚洲国产av

            1. <th id="osa2k"><track id="osa2k"></track></th>
              <rp id="osa2k"><strike id="osa2k"><u id="osa2k"></u></strike></rp>