丰满人妻一区二区三区无码AV|国产乱色国产精品免费视频|国产精品一区二区不卡的视频|2020精品国产福利在线观看香蕉

    1. <rp id="2o2at"><nav id="2o2at"></nav></rp>
      
      

      <rt id="2o2at"></rt>
      <ruby id="2o2at"><nav id="2o2at"></nav></ruby>

    2. <rp id="2o2at"><meter id="2o2at"></meter></rp>

        <tt id="2o2at"><form id="2o2at"></form></tt>

      1. <source id="2o2at"></source>

          首頁 > 編程 > 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成功")
          }


          發表評論 共有條評論
          用戶名: 密碼:
          驗證碼: 匿名發表
          1. <rp id="2o2at"><nav id="2o2at"></nav></rp>
            
            

            <rt id="2o2at"></rt>
            <ruby id="2o2at"><nav id="2o2at"></nav></ruby>

          2. <rp id="2o2at"><meter id="2o2at"></meter></rp>

              <tt id="2o2at"><form id="2o2at"></form></tt>

            1. <source id="2o2at"></source>