go - 在go中列出和访问目录

标签 go

我需要 golan 的一些帮助来编写一个程序,该程序可以搜索给定目录及其子目录以在每个目录中查找特定的单词。

到目前为止,这是我列出目录并将它们保存为数组的方法。现在我想检查它们中的每一个,看看它是否有 child ,如果有,我应该打开它直到我到达树的最后一层。

package main

import (
    "fmt"
    "os"


)

func main() {

    d, err := os.Open("/Perkins")
   // fmt.Println(d.Readdirnames(-1))

    y, err:=d.Readdirnames(-1) // 
    fmt.Println(y)
    for i:=0; i<len(y); i++{
        if y[i]!=" "{
            Folders:=y[i]
            temp,err:=os.Open("/"Folders) //how do i out the array element as a path?
            fmt.Println (temp)

            fmt.Println(err)
            }
    }

最佳答案

注意:"/"Folders 不起作用:"/"+ Folders

在您的情况下,这应该会更好:

temp,err:=os.Open("/Perkins/" + Folders)

(尽管“Folders”不是一个好名字,但“subfolder”会更合适)


一种更有效的方式,如commented通过 chendesheng (参见 answer ),将(作为 in this class )使用 path/filepath/#Walk :

package main

import (
  "fmt"
  "os"
  "path/filepath"
)

func main() {
  filepath.Walk("/Perkins", func(path string, info os.FileInfo, err error) error {
    fmt.Println(path)
    return nil
  })
}

这将列出所有 文件,但您可以将它与过滤这些文件的函数相关联:参见this example :

matched, err := filepath.Match("*.mp3", fi.Name())

然后您可以忽略不需要的文件,只处理与您的模式匹配的文件。

关于go - 在go中列出和访问目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24783429/

相关文章:

parsing - 从字符串中的子字符串解析日期

go - 获取错误未定义 : math in go lang when using math/rand library

go - 反射(reflect)运行时错误: call of reflect. flag.mustBeAssignable为零值

go - 如何获取项目的根路径

go - Go 中的 slice 类型有什么意义?

go - 为什么追加不适用于 slice ?

interface - 在 Go 的接口(interface)中列出接口(interface)

go - 由结构包装的 sql.DB 无法在实例中调用方法

Golang select 在互斥锁和 channel 上等待

Go 中的反射类型和值