golang中檔案和路徑用法
阿新 • • 發佈:2021-10-17
package main import ( "fmt" "io/fs" "io/ioutil" "os" "path" "path/filepath" ) func main() { // 檔案和路徑相關的功能包含了:os、path、filepath、ioutil包 // 1. 建立資料夾 // (1)建立單層目錄,已存在則err有錯 err := os.Mkdir("x2", 0755) fmt.Println(err) // (2)建立多級目錄,已存在則什麼都不做 err2 := os.MkdirAll("t2/src/code/test", 0755) fmt.Println(err2) // 另一種寫法 if err3 := os.Mkdir("x2", 0755); err3 == nil { fmt.Println("資料夾x2建立成功") } else { fmt.Println(err) } if err4 := os.MkdirAll("t2/src/code/test/xxx.go", 0755); err4 == nil { fmt.Println("資料夾t2/src/code/test建立成功") } else { fmt.Println(err) } // 2. 刪除檔案和資料夾 // (1)刪除檔案或空資料夾,資料夾下存在檔案則報錯 if err5 := os.Remove("x2"); err5 != nil { fmt.Println("刪除失敗", err5) } else { fmt.Println("刪除成功") } // (2) 刪除檔案或資料夾(同時刪除子目錄) if err6 := os.RemoveAll("t1"); err6 != nil { fmt.Println("刪除失敗", err6) } else { fmt.Println("刪除成功") } // 3. 路徑是否存在 // 判斷檔案或資料夾是否存在 _, err7 := os.Stat("t2/src/code/test/xxx.go") if err7 != nil { // err7錯誤產生的原因有可能是不存在或者別的,所以需要再次判斷一下是不存在導致的 if os.IsNotExist(err7) { fmt.Println("檔案或資料夾不存在") } } else { fmt.Println("檔案或資料夾已存在") } // 4. 是否是資料夾 fileObject, _ := os.Stat("t2/src/code/test") result := fileObject.IsDir() fmt.Println(result) // 5. 生成絕對路徑 absPath, _ := filepath.Abs("t2/src") fmt.Println(absPath) // 6. 獲取上級目錄 absPath2, _ := filepath.Abs("t2") fmt.Println(absPath2) basePath := filepath.Dir(filepath.Dir(absPath2)) fmt.Println(basePath) // 7. 遍歷目錄(一級) fileList, _ := ioutil.ReadDir("t2") for _, obj := range fileList { fmt.Println(obj.Name()) } // 8. 遍歷目錄(多級) filepath.Walk("t2", func(path string, info fs.FileInfo, err error) error { if !info.IsDir() { fmt.Println("檔案有", path) } return nil }) // 9. 路徑拼接 filePath2 := path.Join("v1", "v2", "v3/v4", "v6.exe") fmt.Println(filePath2) // 10. 副檔名 ext := path.Ext("/xxxx/xxx/xx/xx.txt") fmt.Println(ext) }