# 使用 filepath.walk
package main | |
import ( | |
"fmt" | |
"io/fs" | |
"os" | |
"path/filepath" | |
"strings" | |
) | |
func main() { | |
for i:=0; i< 10; i++{ | |
os.Create(fmt.Sprintf("test_%d.txt",i)) | |
} | |
var files = []string{} | |
filepath.Walk(".", func(path string, info fs.FileInfo, err error) error { | |
if info.IsDir(){ // 判断是否是文件夹 | |
return nil | |
} | |
if strings.HasSuffix(path, ".txt"){ | |
files = append(files, info.Name()) | |
} | |
if filepath.Ext(path) == ".txt"{ // 也可以用这个指令判断后缀 | |
files = append(files, info.Name()) | |
os.Remove(path) | |
} | |
return nil | |
}) | |
fmt.Printf("files: %v\n", files) | |
} |
filepath.Walk
需要提供一个遍历函数,按照他给的写就行了。
结果:
# 使用 ioutil.ReadDir
package main | |
import ( | |
"fmt" | |
"io/ioutil" | |
"log" | |
"strings" | |
) | |
func main() { | |
files := []string{} | |
fi, err := ioutil.ReadDir("..") | |
if err != nil { | |
log.Fatal(err) | |
fmt.Println("Not Exit") | |
} | |
for _, file := range fi { | |
if strings.HasSuffix(file.Name(), ".go") { // 筛选后缀 | |
files = append(files, file.Name()) | |
} | |
} | |
fmt.Printf("files: %v\n", files) | |
} |
# 使用 os.File.Readdir
这个的使用方法也很简单:
package main | |
import ( | |
"fmt" | |
"os" | |
) | |
func main() { | |
f, _:= os.Open("..") | |
files, _ := f.ReadDir(-1) | |
for _, file := range files { | |
fmt.Printf("file.Name(): %v\n", file.Name()) | |
} | |
de, _ := os.ReadDir("..") // 可以直接 readDir,更加方便 | |
for _, file := range de { | |
fmt.Printf("file: %v\n", file.Name()) | |
} | |
} |