go语言中关于文件路径的使用总结
在编程中操作文件非常常见,如读取或者写入文件,但是在此之前会先构造出文件路径,在python中有相应的os.path库,对于文件路径的操作很简单,如
- os.path.basename 获取文件名
- os.path.dirname 获取文件目录名
- os.path.join 拼接文件路径
- os.path.splitext 拆分文件,获取文件名和扩展名
- os.path.adspath 获取文件绝对路径
- os.path.exists 判断文件或者文件夹是否存在
以下尝试在go语言中对上面的这些方法进行实现
在go语言中操作文件路径主要使用 filepath
这个包,使用也比较简单,已经写在注释里了。
| package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
pwd,_ := os.Getwd() // 获取到当前目录,相当于python里的os.getcwd()
fmt.Println("当前的操作路径为:",pwd)
//文件路径拼接
f1 := filepath.Join(pwd,"test","1.txt")
fmt.Println("文件的路径为:",f1)
//文件的目录名
fmt.Println("文件的目录名:",filepath.Dir(f1))
//文件的文件名
fmt.Println("文件的文件名:",filepath.Base(f1))
//文件的绝对路径
adspath,_ := filepath.Abs("evn/3.txt")
fmt.Println("文件的绝对路径为:",adspath)
//拆分路径
dirname,filename := filepath.Split(f1)
fmt.Println("目录名为:",dirname,"文件名为",filename)
//扩展名相关
fmt.Println("f1的扩展名为:",filepath.Ext(f1))
//通过os.Stat()函数返回的文件状态,如果有错误则根据错误状态来判断文件或者文件夹是否存在
fileinfo,err :=os.Stat(f1)
if err!=nil{
fmt.Println(err.Error())
if os.IsNotExist(err){
fmt.Println("file:",f1," not exist!")
}
}else{
//判断路径是否为文件夹
fmt.Println(fileinfo.IsDir())
fmt.Println(!fileinfo.IsDir())
fmt.Println(fileinfo.Name())
}
}
|
运行的结果为:
| 当前的操作路径为: F:\GO\src\gobookcode
文件的路径为: F:\GO\src\gobookcode\test\1.txt
文件的目录名: F:\GO\src\gobookcode\test
文件的文件名: 1.txt
文件的绝对路径为: F:\GO\src\gobookcode\evn\3.txt
目录名为: F:\GO\src\gobookcode\test\ 文件名为 1.txt
f1的扩展名为: .txt
|