测试目录下的文件如下:
- 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