Golang判断文件是否存在及递归创建文件夹

马谦的博客 · · 5695 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一、判断文件或文件夹是否存在

golang 判断文件或者文件夹是否存在可以通过os.stat() 方法和os.IsExist() 方法来判断:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
func isExist(path string)(bool){
_, err := os.Stat(path)
if err != nil{
if os.IsExist(err){
return true
}
if os.IsNotExist(err){
return false
}
fmt.Println(err)
return false
}
return true
}

二、递归创建文件夹

递归文件夹用到os.MkdirAll() 方法:

1
func MkdirAll(path string, perm FileMode) error

第一个参数是路径,第二个是权限。如果文件夹不存在就创建,存在则不做任何操作。

三、测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package main
import (
"os"
"fmt"
)
//判断文件或文件夹是否存在
func isExist(path string)(bool){
_, err := os.Stat(path)
if err != nil{
if os.IsExist(err){
return true
}
if os.IsNotExist(err){
return false
}
fmt.Println(err)
return false
}
return true
}
func main(){
//递归创建文件夹
err := os.MkdirAll("./test/1/2", os.ModePerm)
if err != nil{
fmt.Println(err)
return
}
dirs := []string{"./test/1", "./test/2", "./test/1.txt"}
for _, v := range dirs{
if isExist(v){
fmt.Printf("%s is exist!", v)
}else{
fmt.Printf("%s is not exist!", v)
}
}
}

在终端中执行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ma@ma:/data/code/go/src/file_exist$ tree
.
└── file_exist.go
0 directories, 1 file
ma@ma:/data/code/go/src/file_exist$ go run file_exist.go # 运行程序
./test/1 is exist!
./test/2 is not exist!
./test/1.txt is not exist!
ma@ma:/data/code/go/src/file_exist$ tree
.
├── file_exist.go
└── test
└── 1
└── 2
3 directories, 1 file
ma@ma:/data/code/go/src/file_exist$ touch test/1.txt # 创建1.txt
ma@ma:/data/code/go/src/file_exist$ go run file_exist.go
./test/1 is exist!
./test/2 is not exist!
./test/1.txt is exist! # 1.txt存在

有疑问加站长微信联系(非本文作者)

本文来自:马谦的博客

感谢作者:马谦的博客

查看原文:Golang判断文件是否存在及递归创建文件夹

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

5695 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传