趣文网 > 作文大全

创建 递归遍历和删除临时目录

2020-12-06 08:10:01
相关推荐

引言

下面通过一个例子,说明如何实现创建、递归遍历和删除临时目录。用到标准库的包主要有:"os","path/filepath","io/ioutil","fmt"。

流程图

创建临时目录

ioutil.TempDir()用来创建临时目录,该方法接收两个参数。第一个参数表示需要在哪里创建新目录。若是空值,则会自动调用os.TempDir()方法获取系统的默认临时目录;第二个参数是匹配的模式,比如是“*_nginx.log”,生成目录时会用随机字符串将“*”替换掉。fmt.Errorf()会格式化输出错误信息,返回error。但error是接口类型,可用error.Error()方法将错误信息转换为字符串表示。filepath.Join()用来拼接路径。os.MkdirAll()会递归创建目录,权限位适用于新创建的所有目录。类似linux命令“mkdir -p /foo/bar”。

遍历和删除临时目录

os.Chdir()用来更改当前的工作目录,当前工作目录一般默认为环境变量“GOPATH”的值,如果使用gomod包管理,则默认为环境变量“GOMOD”的值。在命令行窗口下,可用“go env”命令查看。自定义的subDirToSkip变量的作用是用来指定要跳过的目录,该操作不会报错,如果遍历时的目录名与它相等,必须返回一个固定的值“filepath.SkipDir”,专门用来返回的值,不是错误。filepath.Walk()用来递归遍历目录和文件,接收两个参数。第一个是设置要遍历的根路径。第二个是回调函数WalkFunc,它的用法:type WalkFunc func(path string, info os.FileInfo, err error) errorpath:表示遍历的目录前缀,假设目录foo中有两个文件a.txt和b.txt,将foo设为前缀,在遍历时就会分别用foo/a.txt和foo/b.txt作为参数调用walk函数。info:表示文件的详细信息,比如文件名、文件大小等等。它是接口类型。type FileInfo interface {Name() string // 文件名Size() int64 // 文件大小,单位是字节。Mode() FileMode // 文件模式位ModTime() time.Time // 修改时间IsDir() bool // 是否是目录Sys() interface{} // 基础数据源}error:表示错误信息,出现错误时会停止遍历。

运行

在windows下的运行结果:

原创不易,记得关注一下。

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

初中亲情作文600字叙事 介绍徐州家乡的作文 榜样的力量作文500字 关于伤心的作文600字 带着希望出发作文 细节见人品作文 我的小台灯作文 被忽略的爱作文 小学开学第一天作文 怎样学习英语的英语作文 高考语文作文题目大全 你是我的太阳满分作文 毕业了作文600字 关于诚信友善的作文 难忘的教诲作文 保护大熊猫的英语作文 以看见为题目的作文 美丽安徽作文 我喜欢中秋节作文 作文小事不小400字 美丽的什么作文600字 描写天门山景色的作文 那件事真让我什么作文 感受大自然的美好作文 享受友谊作文500字 观察食物的作文 学骑车作文400字 爱国是一种责任作文 吃亏是福的作文 走出困境的作文