Golang实现文件夹的创建与删除的方法详解

 更新时间:2022年05月25日 15:20:38   作者:剑客阿良_ALiang  
这篇文章主要介绍了如何利用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实现文件夹的创建与删除的方法详解的文章就介绍到这了,更多相关Golang文件夹创建 删除内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go项目在linux服务器的部署详细步骤

    Go项目在linux服务器的部署详细步骤

    在今天的软件开发中,使用Linux作为操作系统的比例越来越高,而Golang语言则因为其高效、简洁和并发性能等特点,也被越来越多的开发者所青睐,这篇文章主要给大家介绍了关于Go项目在linux服务器的部署详细步骤,需要的朋友可以参考下
    2023-09-09
  • Golang算法之田忌赛马问题实现方法分析

    Golang算法之田忌赛马问题实现方法分析

    这篇文章主要介绍了Golang算法之田忌赛马问题实现方法,结合具体实例形式分析了基于Go语言的田忌赛马问题原理与算法实现技巧,需要的朋友可以参考下
    2017-02-02
  • golang 实现tcp server端和client端,并计算RTT时间操作

    golang 实现tcp server端和client端,并计算RTT时间操作

    这篇文章主要介绍了golang 实现tcp server端和client端,并计算RTT时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 基于Go和PHP语言实现爬楼梯算法的思路详解

    基于Go和PHP语言实现爬楼梯算法的思路详解

    这篇文章主要介绍了Go和PHP 实现爬楼梯算法,本文通过动态规划和斐波那契数列两种解决思路给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • 浅析Golang中调度器的关键机制与性能

    浅析Golang中调度器的关键机制与性能

    Golang的调度器是其并发模型的核心组件,负责管理Goroutine的调度和执行,本文将从理论和代码层面分析Golang调度器的关键机制,感兴趣的可以了解下
    2025-03-03
  • golang爬虫colly 发送post请求

    golang爬虫colly 发送post请求

    本文主要介绍了golang爬虫colly 发送post请求实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 解读rand.Seed(time.Now().UnixNano())的作用及说明

    解读rand.Seed(time.Now().UnixNano())的作用及说明

    这篇文章主要介绍了关于rand.Seed(time.Now().UnixNano())的作用及说明,具有很好的参考价值,希望对大家有所帮助。
    2023-03-03
  • Golang测试框架goconvey进行单元测试流程介绍

    Golang测试框架goconvey进行单元测试流程介绍

    goconvey是一款针对Golang的测试框架,可以管理和运行测试用例,同时提供了丰富的断言函数,并支持很多Web界面特性,这篇文章主要介绍了使用goconvey进行单元测试流程,感兴趣的同学可以参考下文
    2023-05-05
  • go语言中使用ent做关联查询的示例详解

    go语言中使用ent做关联查询的示例详解

    go语言的ent框架是facebook开源的ORM框架,是go语言开发中的常用框架,而关联查询又是日常开发中的常见数据库操作,故文本给出一个使用ent做关联查询的使用示例,需要的朋友可以参考下
    2024-02-02
  • gRPC中拦截器的使用详解

    gRPC中拦截器的使用详解

    这篇文章主要介绍了gRPC中拦截器的使用详解,本次主要介绍在gRPC中使用拦截器,包括一元拦截器和流式拦截器,在拦截器中添加JWT认证,客户端登录之后会获得token,请求特定的API时候需要带上token才能访问,需要的朋友可以参考下
    2023-10-10

最新评论