網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
學(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) }
原文鏈接:https://blog.csdn.net/zhiweihongyan1/article/details/124950138
相關(guān)推薦
- 2022-04-16 C++中allocator類(lèi)使用示例_C 語(yǔ)言
- 2022-06-07 C++11中跳轉(zhuǎn)initializer_list實(shí)現(xiàn)分析_C 語(yǔ)言
- 2023-05-23 Numpy數(shù)組轉(zhuǎn)置的實(shí)現(xiàn)_python
- 2023-04-19 C/C++實(shí)現(xiàn)內(nèi)存泄漏檢測(cè)詳解_C 語(yǔ)言
- 2023-02-06 C#實(shí)現(xiàn)對(duì)文件進(jìn)行加密保護(hù)的示例代碼_C#教程
- 2022-10-25 Python條件語(yǔ)句的使用_python
- 2022-10-15 conda虛擬環(huán)境使用pip下載包到當(dāng)前環(huán)境的兩種方法_python
- 2022-07-11 UVM中設(shè)置打印信息的冗余度閾值和重載打印信息的嚴(yán)重性
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支