Golang实现文件夹的创建与删除的方法详解
学习笔记,写到哪是哪。
接着上一篇对纯文本文件读写操作,主要去实现一些文件夹操作。
创建文件夹
创建文件夹的时候往往要先判断文件夹是否存在。
样例代码如下
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
}
//创建文件夹
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("创建目录异常 -> %v\n", err)
} else {
fmt.Println("创建成功!")
}
}
}
func main() {
CreateDir("./output")
}
执行结果
创建成功!
Process finished with the exit code 0
注意
1、其中os.ModePerm主要是对创建文件夹的授权,了解linux的会比较熟悉。
其中 ModePerm FileMode = 0777,也就是最高权限,可读可写可执行。
也可以直接使用os.FileMode(644).String()。
删除文件和文件夹
使用os.Remove方法来删除文件,使用os.RemoveAll方法来删除文件夹。
可以看一下RemoveAll的内部实现,整体上就是遍历和递归操作。
样例代码如下
//删除文件
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还能实现一些常见的文件操作,如网络文件下载,读写csv文件等,以下是实现代码
网络文件下载
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实现文件夹的创建与删除的方法详解的文章就介绍到这了,更多相关Golang文件夹创建 删除内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341