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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值