目录

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 这个包,使用也比较简单,已经写在注释里了。

 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
37
38
39
40
41
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
  • 文章标题: go语言中关于文件路径的使用总结
  • 本文作者: 杨彦星
  • 本文链接: https://www.yangyanxing.com/article/file_path_in_go.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。