Golang實現(xiàn)文件夾的創(chuàng)建與刪除的方法詳解
學習筆記,寫到哪是哪。
接著上一篇對純文本文件讀寫操作,主要去實現(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í)行結果
創(chuàng)建成功!
Process finished with the exit code 0
注意
1、其中os.ModePerm主要是對創(chuàng)建文件夾的授權,了解linux的會比較熟悉。
其中 ModePerm FileMode = 0777,也就是最高權限,可讀可寫可執(zhí)行。
也可以直接使用os.FileMode(644).String()。
刪除文件和文件夾
使用os.Remove方法來刪除文件,使用os.RemoveAll方法來刪除文件夾。
可以看一下RemoveAll的內部實現(xiàn),整體上就是遍歷和遞歸操作。
樣例代碼如下
//刪除文件
func RemoveFile(path string) error {
_err := os.Remove(path)
return _err
}
//刪除文件夾
func RemoveDir(path string) error {
_err := os.RemoveAll(path)
return _err
}小結
總的來說直接使用os,和Python一樣,麻煩,還是得找個工具庫來操作,方便簡潔一點。而且一直往上傳遞error的方式讓我頭大,好煩啊。
補充
當然Golang還能實現(xiàn)一些常見的文件操作,如網(wǎng)絡文件下載,讀寫csv文件等,以下是實現(xiàn)代碼
網(wǎng)絡文件下載
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)
}
到此這篇關于Golang實現(xiàn)文件夾的創(chuàng)建與刪除的方法詳解的文章就介紹到這了,更多相關Golang文件夾創(chuàng)建 刪除內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Windows下在CMD下執(zhí)行Go出現(xiàn)中文亂碼的解決方法
在cmd下運行go程序或者是GOLAND的Terminal下運行go程序會出現(xiàn)中文亂碼的情況。本文就詳細的介紹下解決方法,具有一定的參考價值,感興趣的可以了解一下2021-12-12
go責任鏈行為型設計模式Chain?Of?Responsibility
這篇文章主要為大家介紹了go行為型設計模式之責任鏈Chain?Of?Responsibility使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12
go?module化?import?調用本地模塊?tidy的方法
這篇文章主要介紹了go?module化?import?調用本地模塊?tidy的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09

