作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我在使用 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())
}
}
}
我不太确定为什么会这样,我是 Go 的新手。我的猜测是因为它是通过 main.go 导入的。我怎样才能让它只搜索 ./myfolder
中的文件夹和文件?
最佳答案
当前目录不是源文件的目录,而是执行程序的当前目录。
如果您从 shell(无论是 bash 还是 Windows 命令行)执行程序,程序将从您的 shell 继承当前目录。
在执行程序之前,您必须使用 cd myfolder
更改当前目录,或者在您的 Go 源文件中调用 os.Chdir("myfolder")
。 (os.Chdir
不会影响您的 shell 的当前目录)
如果你想递归地列出一个目录,你必须遍历它。参见 filepath.Walk .
关于go - 当通过另一个文件导入时,仅使用 ioutils ReadDir 扫描当前目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50669983/
我是一名优秀的程序员,十分优秀!