学习笔记,写到哪是哪。
接着上一篇对纯文本文件读写操作,主要去实现一些文件夹操作。
创建文件夹创建文件夹的时候往往要先判断文件夹是否存在。
样例代码如下
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("获取文件夹异常 -> %vn", _err)
return
}
if _exist {
fmt.Println("文件夹已存在!")
} else {
err := os.Mkdir(path, os.ModePerm)
if err != nil {
fmt.Printf("创建目录异常 -> %vn", 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的方式让我头大,好烦啊。
分享一下最近的心情,最近工作很忙,往往每天都到10点以后了,周六周天也差不多,有些疲倦。每天抽出一点时间来看看golang已经挺不容易了,其实写这个系列也是督促自己坚持一下。基础语法目前也比较熟悉了,毕竟已经编程多年,一通百通。后面还是整合一些项目,将一些简单的项目使用golang搭建起来,做一些业务的demo。总之今年怎么也要把放弃过多次的golang好好学习且运用到工作中,加油吧。



