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
  • asp之家 网络编程 m.aspxhome.com