问题是不言自明的。
拜托,有没有人可以告诉我如何通过简短有效的方式按名称(无扩展名)检查文件的存在。如果文件夹具有多个具有相同名称的文件,则代码返回多次会很好。
示例:
folder/
file.html
file.md
更新
如何通过官方文档使用filepath.Match()
或filepath.Glob()
函数之一并不明显。所以这里有一些例子:
matches, _ := filepath.Glob("./folder/file*") //returns paths to real files [folder/file.html, folder/file.md]
matchesToPattern, _ := filepath.Match("./folder/file*", "./folder/file.html") //returns true, but it is just compare strings and doesn't check real content
答案 0 :(得分:3)
您需要使用path/filepath
package。
要检查的功能有:Glob()
,Match()
和Walk()
- 选择最适合您口味的内容。
答案 1 :(得分:1)
以下是更新后的代码:
package main
import (
"fmt"
"os"
"path/filepath"
"regexp"
)
func main() {
dirname := "." + string(filepath.Separator)
d, err := os.Open(dirname)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer d.Close()
fi, err := d.Readdir(-1)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
r, _ := regexp.Compile("f([a-z]+)le") // the string to match
for _, fi := range fi {
if fi.Mode().IsRegular() { // is file
if r.Match([]byte(fi.Name())) { // if it match
fmt.Println(fi.Name(), fi.Size(), "bytes")
}
}
}
}
使用此功能,您还可以搜索日期,大小,包含子文件夹或文件属性。