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())
    }
}

运行的结果为:

1
2
3
4
5
6
7
当前的操作路径为: 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