日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

Golang實(shí)現(xiàn)文件夾的創(chuàng)建與刪除的方法詳解_Golang

作者:劍客阿良_ALiang ? 更新時(shí)間: 2022-07-24 編程語(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

欄目分類(lèi)
最近更新