我在使用ioutils.ReadDir时遇到了问题,由于某些原因,它正在扫描项目根目录中的所有文件,而不是仅扫描当前目录中的文件。
./main.go
import (
"myfolder/myfile"
)
func main() {
myfile.MyFunction()
}
./myfolder/myfile.go
package myfile
func MyFunction() {
files, err := ioutil.ReadDir(".")
if err != nil {
log.Fatal(err)
}
for _, f := range files {
fi, err := os.Stat(f.Name())
if err != nil {
log.Fatal(err)
return
}
switch mode := fi.Mode(); {
case mode.IsDir():
fmt.Printf("%#s is a folder\n", f.Name())
case mode.IsRegular():
fmt.Printf("%#s is a file\n", f.Name())
}
}
}
我不太确定为什么会这样,我是新来的。我猜是因为它是通过main.go导入的。如何使其仅搜索./myfolder
中的文件夹和文件
发布于 2018-06-04 03:20:27
当前目录不是源文件的目录,而是执行程序的用户的当前目录。
如果从shell ( bash或Windows命令行)执行程序,该程序将从shell继承当前目录。
在执行程序或调用Go源文件中的os.Chdir("myfolder")
之前,必须使用cd myfolder
更改当前目录。(os.Chdir
不会影响shell的当前目录)
如果你想以递归方式列出一个目录,你必须遍历它。参见filepath.Walk。
https://stackoverflow.com/questions/50669983
复制相似问题