Golang实现文件夹的创建与删除的方法详解
作者:剑客阿良_ALiang 时间:2024-02-02 13:57:02
学习笔记,写到哪是哪。
接着上一篇对纯文本文件读写操作,主要去实现一些文件夹操作。
创建文件夹
创建文件夹的时候往往要先判断文件夹是否存在。
样例代码如下
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)
}
来源:https://blog.csdn.net/zhiweihongyan1/article/details/124950138
标签:Golang,文件夹,创建,删除
0
投稿
猜你喜欢
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2023-08-21 20:03:14
如何用python编写一个生成春联软件
2021-12-12 07:27:47
MySQL数据库之数据表操作
2024-01-19 18:01:40
如何把一长串数字分位显示?
2009-11-06 14:01:00
如何在vue项目中使用UEditor--plus
2024-05-10 14:20:43
css模拟title和alt的提示效果
2007-11-08 13:03:00
php 多继承的几种常见实现方法示例
2023-11-22 19:03:19
Pytorch中的model.train() 和 model.eval() 原理与用法解析
2022-06-06 20:51:04
Python+OpenCV实现在图像上绘制矩形
2023-07-27 15:29:58
Python中优化NumPy包使用性能的教程
2021-03-27 21:08:43
js定时器怎么写?就是在特定时间执行某段程序
2024-04-22 12:54:00
python连接、操作mongodb数据库的方法实例详解
2024-01-12 13:44:40
Python中range函数的基本用法完全解读
2021-02-28 05:33:45
深入浅析python with语句简介
2022-06-30 20:23:16
python写一个md5解密器示例
2023-05-24 14:45:10
MySql中子查询内查询示例详解
2024-01-27 23:25:12
Request.ServerVariables("HTTP_REFERER")的用法
2008-06-19 13:33:00
PHP自带函数给数字或字符串自动补齐位数
2023-07-19 01:09:55
python zip,lambda,map函数代码实例
2023-08-25 05:04:49
MySQL 自动备份与数据库被破坏后的恢复方法
2010-03-25 10:29:00