<em id="kkln5"><ruby id="kkln5"><u id="kkln5"></u></ruby></em>
<rp id="kkln5"></rp>

    <s id="kkln5"><object id="kkln5"></object></s>
  1. <dd id="kkln5"><pre id="kkln5"></pre></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成功")
    }


    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    <em id="kkln5"><ruby id="kkln5"><u id="kkln5"></u></ruby></em>
    <rp id="kkln5"></rp>

      <s id="kkln5"><object id="kkln5"></object></s>
    1. <dd id="kkln5"><pre id="kkln5"></pre></dd>