Golang實現(xiàn)文件夾的創(chuàng)建與刪除的方法詳解
學(xué)習(xí)筆記,寫到哪是哪。
接著上一篇對純文本文件讀寫操作,主要去實現(xiàn)一些文件夾操作。
創(chuàng)建文件夾
創(chuàng)建文件夾的時候往往要先判斷文件夾是否存在。
樣例代碼如下
package main import ( "bufio" "fmt" "io" "os" ) //判斷文件夾是否存在 func HasDir(path string) (bool, error) { _, _err := os.Stat(path) if _err == nil { return true, nil } if os.IsNotExist(_err) { return false, nil } return false, _err } //創(chuàng)建文件夾 func CreateDir(path string) { _exist, _err := HasDir(path) if _err != nil { fmt.Printf("獲取文件夾異常 -> %v\n", _err) return } if _exist { fmt.Println("文件夾已存在!") } else { err := os.Mkdir(path, os.ModePerm) if err != nil { fmt.Printf("創(chuàng)建目錄異常 -> %v\n", err) } else { fmt.Println("創(chuàng)建成功!") } } } func main() { CreateDir("./output") }
執(zhí)行結(jié)果
創(chuàng)建成功!
Process finished with the exit code 0
注意
1、其中os.ModePerm主要是對創(chuàng)建文件夾的授權(quán),了解linux的會比較熟悉。
其中 ModePerm FileMode = 0777,也就是最高權(quán)限,可讀可寫可執(zhí)行。
也可以直接使用os.FileMode(644).String()。
刪除文件和文件夾
使用os.Remove方法來刪除文件,使用os.RemoveAll方法來刪除文件夾。
可以看一下RemoveAll的內(nèi)部實現(xiàn),整體上就是遍歷和遞歸操作。
樣例代碼如下
//刪除文件 func RemoveFile(path string) error { _err := os.Remove(path) return _err } //刪除文件夾 func RemoveDir(path string) error { _err := os.RemoveAll(path) return _err }
小結(jié)
總的來說直接使用os,和Python一樣,麻煩,還是得找個工具庫來操作,方便簡潔一點。而且一直往上傳遞error的方式讓我頭大,好煩啊。
補充
當(dāng)然Golang還能實現(xiàn)一些常見的文件操作,如網(wǎng)絡(luò)文件下載,讀寫csv文件等,以下是實現(xiàn)代碼
網(wǎng)絡(luò)文件下載
package main import ( "fmt" "github.com/zhangdapeng520/zdpgo_file" ) func main() { f := zdpgo_file.New() savePath := "./" // 單個下載 url := "https://avatar.csdnimg.cn/2/9/0/1_togolife.jpg" err := f.Download.Download(savePath, url) if err != nil { fmt.Println("下載失?。?, err) } else { fmt.Println("下載成功") } // 批量下載 urls := []string{ "https://alifei04.cfp.cn/creative/vcg/nowarter800/new/VCG41N695593548.jpg", "https://tenfei02.cfp.cn/creative/vcg/nowarter800/new/VCG41N1014325904.jpg", "https://tenfei05.cfp.cn/creative/vcg/nowater800/new/VCG41545444880.jpg", } f.Download.Downloads(savePath, urls) }
讀寫csv
package main import ( "fmt" "github.com/zhangdapeng520/zdpgo_file" ) func main() { f := zdpgo_file.New() data := [][]string{ {"a", "b", "c"}, {"111", "222", "333"}, {"111", "222", "333"}, {"111", "222", "333"}, {"111", "222", "333"}, {"111", "222", "333"}, {"111", "222", "333"}, {"111", "222", "333"}, {"111", "222", "333"}, {"111", "222", "333"}, {"111", "222", "333"}, } // 寫入 f.Csv.Write("test.csv", data) // 讀取 dataNew, err := f.Csv.Read("test.csv") if err != nil { fmt.Println(err) } fmt.Println(dataNew) }
到此這篇關(guān)于Golang實現(xiàn)文件夾的創(chuàng)建與刪除的方法詳解的文章就介紹到這了,更多相關(guān)Golang文件夾創(chuàng)建 刪除內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows下在CMD下執(zhí)行Go出現(xiàn)中文亂碼的解決方法
在cmd下運行g(shù)o程序或者是GOLAND的Terminal下運行g(shù)o程序會出現(xiàn)中文亂碼的情況。本文就詳細(xì)的介紹下解決方法,具有一定的參考價值,感興趣的可以了解一下2021-12-12Golang IPv4 字符串與整數(shù)互轉(zhuǎn)方式
這篇文章主要介紹了Golang IPv4 字符串與整數(shù)互轉(zhuǎn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11Golang?Compare?And?Swap算法詳細(xì)介紹
CAS算法是一種有名的無鎖算法。無鎖編程,即不使用鎖的情況下實現(xiàn)多線程之間的變量同步,也就是在沒有線程被阻塞的情況下實現(xiàn)變量的同步,所以也叫非阻塞同步Non-blocking?Synchronization2022-10-10go責(zé)任鏈行為型設(shè)計模式Chain?Of?Responsibility
這篇文章主要為大家介紹了go行為型設(shè)計模式之責(zé)任鏈Chain?Of?Responsibility使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12go?module化?import?調(diào)用本地模塊?tidy的方法
這篇文章主要介紹了go?module化?import?調(diào)用本地模塊?tidy的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09