<del id="7msxa"><table id="7msxa"><strong id="7msxa"></strong></table></del><legend id="7msxa"></legend>

<tbody id="7msxa"></tbody>
  • <ol id="7msxa"></ol><th id="7msxa"><track id="7msxa"><rt id="7msxa"></rt></track></th>
    1. <dd id="7msxa"></dd>
    2. 首頁 > 編程 > 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成功")
      }


      發表評論 共有條評論
      用戶名: 密碼:
      驗證碼: 匿名發表
      japan日本人妻熟老太
      <del id="7msxa"><table id="7msxa"><strong id="7msxa"></strong></table></del><legend id="7msxa"></legend>

      <tbody id="7msxa"></tbody>
    3. <ol id="7msxa"></ol><th id="7msxa"><track id="7msxa"><rt id="7msxa"></rt></track></th>
      1. <dd id="7msxa"></dd>