侧边栏壁纸
博主头像
Tony's Blog博主等级

行动起来,coding

  • 累计撰写 83 篇文章
  • 累计创建 58 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录
go

go 文件路径操作

Tony
2024-02-21 / 0 评论 / 0 点赞 / 3 阅读 / 3141 字

本文链接: https://blog.csdn.net/lishuangquan1987/article/details/125614965

测试目录下的文件如下:

  • 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

0

评论区