本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
Golang实现文件夹的创建与删除的方法详解
奔跑的男人 · 238浏览 · 发布于2022-05-26 +关注

这篇文章主要介绍了如何利用Go语言实现对文件夹的常用操作:创建于删除。文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

学习笔记,写到哪是哪。

接着上一篇对纯文本文件读写操作,主要去实现一些文件夹操作。

创建文件夹

创建文件夹的时候往往要先判断文件夹是否存在。

样例代码如下

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实现文件夹的创建与删除的方法详解的文章就介绍到这了 


相关推荐

PHP实现部分字符隐藏

沙雕mars · 1325浏览 · 2019-04-28 09:47:56
Java中ArrayList和LinkedList区别

kenrry1992 · 908浏览 · 2019-05-08 21:14:54
Tomcat 下载及安装配置

manongba · 970浏览 · 2019-05-13 21:03:56
JAVA变量介绍

manongba · 962浏览 · 2019-05-13 21:05:52
什么是SpringBoot

iamitnan · 1086浏览 · 2019-05-14 22:20:36
加载中

0评论

评论
分类专栏
小鸟云服务器
扫码进入手机网页