Golang實(shí)現(xiàn)文件夾的創(chuàng)建與刪除的方法詳解
學(xué)習(xí)筆記,寫(xiě)到哪是哪。
接著上一篇對(duì)純文本文件讀寫(xiě)操作,主要去實(shí)現(xiàn)一些文件夾操作。
創(chuàng)建文件夾
創(chuàng)建文件夾的時(shí)候往往要先判斷文件夾是否存在。
樣例代碼如下
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主要是對(duì)創(chuàng)建文件夾的授權(quán),了解linux的會(huì)比較熟悉。
其中 ModePerm FileMode = 0777,也就是最高權(quán)限,可讀可寫(xiě)可執(zhí)行。
也可以直接使用os.FileMode(644).String()。
刪除文件和文件夾
使用os.Remove方法來(lái)刪除文件,使用os.RemoveAll方法來(lái)刪除文件夾。
可以看一下RemoveAll的內(nèi)部實(shí)現(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é)
總的來(lái)說(shuō)直接使用os,和Python一樣,麻煩,還是得找個(gè)工具庫(kù)來(lái)操作,方便簡(jiǎn)潔一點(diǎn)。而且一直往上傳遞error的方式讓我頭大,好煩啊。
補(bǔ)充
當(dāng)然Golang還能實(shí)現(xiàn)一些常見(jiàn)的文件操作,如網(wǎng)絡(luò)文件下載,讀寫(xiě)csv文件等,以下是實(shí)現(xiàn)代碼
網(wǎng)絡(luò)文件下載
package main
import (
"fmt"
"github.com/zhangdapeng520/zdpgo_file"
)
func main() {
f := zdpgo_file.New()
savePath := "./"
// 單個(gè)下載
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)
}
讀寫(xiě)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"},
}
// 寫(xiě)入
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實(shí)現(xiàn)文件夾的創(chuàng)建與刪除的方法詳解的文章就介紹到這了,更多相關(guān)Golang文件夾創(chuàng)建 刪除內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go項(xiàng)目在linux服務(wù)器的部署詳細(xì)步驟
在今天的軟件開(kāi)發(fā)中,使用Linux作為操作系統(tǒng)的比例越來(lái)越高,而Golang語(yǔ)言則因?yàn)槠涓咝?、?jiǎn)潔和并發(fā)性能等特點(diǎn),也被越來(lái)越多的開(kāi)發(fā)者所青睞,這篇文章主要給大家介紹了關(guān)于Go項(xiàng)目在linux服務(wù)器的部署詳細(xì)步驟,需要的朋友可以參考下2023-09-09
Golang算法之田忌賽馬問(wèn)題實(shí)現(xiàn)方法分析
這篇文章主要介紹了Golang算法之田忌賽馬問(wèn)題實(shí)現(xiàn)方法,結(jié)合具體實(shí)例形式分析了基于Go語(yǔ)言的田忌賽馬問(wèn)題原理與算法實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-02-02
golang 實(shí)現(xiàn)tcp server端和client端,并計(jì)算RTT時(shí)間操作
這篇文章主要介紹了golang 實(shí)現(xiàn)tcp server端和client端,并計(jì)算RTT時(shí)間操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
基于Go和PHP語(yǔ)言實(shí)現(xiàn)爬樓梯算法的思路詳解
這篇文章主要介紹了Go和PHP 實(shí)現(xiàn)爬樓梯算法,本文通過(guò)動(dòng)態(tài)規(guī)劃和斐波那契數(shù)列兩種解決思路給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
淺析Golang中調(diào)度器的關(guān)鍵機(jī)制與性能
Golang的調(diào)度器是其并發(fā)模型的核心組件,負(fù)責(zé)管理Goroutine的調(diào)度和執(zhí)行,本文將從理論和代碼層面分析Golang調(diào)度器的關(guān)鍵機(jī)制,感興趣的可以了解下2025-03-03
golang爬蟲(chóng)colly?發(fā)送post請(qǐng)求
本文主要介紹了golang爬蟲(chóng)colly?發(fā)送post請(qǐng)求實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
解讀rand.Seed(time.Now().UnixNano())的作用及說(shuō)明
這篇文章主要介紹了關(guān)于rand.Seed(time.Now().UnixNano())的作用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-03-03
Golang測(cè)試框架goconvey進(jìn)行單元測(cè)試流程介紹
goconvey是一款針對(duì)Golang的測(cè)試框架,可以管理和運(yùn)行測(cè)試用例,同時(shí)提供了豐富的斷言函數(shù),并支持很多Web界面特性,這篇文章主要介紹了使用goconvey進(jìn)行單元測(cè)試流程,感興趣的同學(xué)可以參考下文2023-05-05
go語(yǔ)言中使用ent做關(guān)聯(lián)查詢(xún)的示例詳解
go語(yǔ)言的ent框架是facebook開(kāi)源的ORM框架,是go語(yǔ)言開(kāi)發(fā)中的常用框架,而關(guān)聯(lián)查詢(xún)又是日常開(kāi)發(fā)中的常見(jiàn)數(shù)據(jù)庫(kù)操作,故文本給出一個(gè)使用ent做關(guān)聯(lián)查詢(xún)的使用示例,需要的朋友可以參考下2024-02-02

