go 文件路径操作

Posted lishuangquan1987

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go 文件路径操作相关的知识,希望对你有一定的参考价值。

测试目录下的文件如下:

  • main.go
  • 1.txt
  • ./a/b/2.txt

获取指定文件夹下的所有文件(不递归)

package main

import (
	"fmt"
	"io/ioutil"
)

func main() 
	baseDir := "./"
	fileInfos, _ := ioutil.ReadDir(baseDir)

	for _, f := range fileInfos 
		if f.IsDir()
			continue
		
		fmt.Println(f.Name())
	

输出:

PS E:\\Go Project\\pathtest> go run main.go
1.txt
main.go

获取指定文件夹下的所有文件(递归)

package main

import (
	"fmt"
	"io/ioutil"
	"path/filepath"
)

func main() 
	baseDir := "./"

	files := ReadFiles(baseDir)
	for _, file := range files 
		fmt.Println(file)
	


func ReadFiles(dir string) []string 
	result := make([]string, 0)
	fileInfos, _ := ioutil.ReadDir(dir)

	for _, f := range fileInfos 
		if f.IsDir() 
			result = append(result, ReadFiles(filepath.Join(dir, f.Name()))...)
		 else 
			result = append(result, filepath.Join(dir, f.Name()))
		
	
	return result


输出:

PS E:\\Go Project\\pathtest> go run main.go
1.txt
a\\b\\2.txt
main.go

路径拼接

路径:./a/b/2.txt 实现拼接:

func main() 
	baseDir := "./"
	aDir := "a"
	bDir := "b"
	file := "2.txt"

	absFilePath := filepath.Join(baseDir, aDir, bDir, file)
	fmt.Println(absFilePath)

输出:

PS E:\\Go Project\\pathtest> go run main.go
a\\b\\2.txt

求一个路径相对于另外一个路径的相对路径

baseDir := "c:\\\\a"
targetFile := "c:\\\\b\\\\c\\\\d\\\\xx.txt"

f, err := filepath.Rel(baseDir, targetFile)
if err != nil 
	fmt.Println(err)
 else 
	fmt.Println("ok:" + f)

结果:

PS E:\\Go Project\\pathtest> go run main.go
ok:..\\b\\c\\d\\xx.txt

以上是关于go 文件路径操作的主要内容,如果未能解决你的问题,请参考以下文章

Go path/filepath文件路径操作

GO文件操作

在 Go (Golang) 中查找文件系统对象

GO语言文件的创建与打开实例分析

go模板文件引入js路径

go环境变量配置 (GOROOT和GOPATH)