Go

go语言中关于文件路径的使用总结

在编程中操作文件非常常见,如读取或者写入文件,但是在此之前会先构造出文件路径,在python中有相应的os.path库,对于文件路径的操作很简单,如 - os.path.basename 获取文件名 - os.path.dirname 获取…

在编程中操作文件非常常见,如读取或者写入文件,但是在此之前会先构造出文件路径,在python中有相应的os.path库,对于文件路径的操作很简单,如

  • os.path.basename 获取文件名
  • os.path.dirname 获取文件目录名
  • os.path.join 拼接文件路径
  • os.path.splitext 拆分文件,获取文件名和扩展名
  • os.path.adspath 获取文件绝对路径
  • os.path.exists 判断文件或者文件夹是否存在

以下尝试在go语言中对上面的这些方法进行实现

在go语言中操作文件路径主要使用 filepath 这个包,使用也比较简单,已经写在注释里了。

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

运行的结果为:

plaintext
当前的操作路径为: 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
杨彦星 后端工程师 · 序语程言主理人

做了八年后端,最近在 AI 行业折腾。喜欢把复杂的事情拆开讲清楚,讨厌「显而易见」这四个字。这里记录我踩过的坑和攒下的经验,愿你少踩一点。

yangyanxing1005@qq.com

查看主页