文件系统在Golang中扫描

前端之家收集整理的这篇文章主要介绍了文件系统在Golang中扫描前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
>我需要写一个函数,当给定一个文件夹的路径
扫描以该文件夹为根的文件
>然后我需要在该文件显示目录结构。

我知道如何做2(我将使用jstree在浏览器中显示它)。

请帮我第1部分,像什么/哪里开始写这样的
函数

编辑:足够的人仍然打这个答案,我想我会更新它的Go1 API。这是一个工作实例 filepath.Walk().原来是下面。
package main

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

func visit(path string,f os.FileInfo,err error) error {
  fmt.Printf("Visited: %s\n",path)
  return nil
} 


func main() {
  flag.Parse()
  root := flag.Arg(0)
  err := filepath.Walk(root,visit)
  fmt.Printf("filepath.Walk() returned %v\n",err)
}

请注意,filepath.Walk以递归方式遍历目录树。

这是一个示例运行:

$ mkdir -p dir1/dir2
$ touch dir1/file1 dir1/dir2/file2
$ go run walk.go dir1
Visited: dir1
Visited: dir1/dir2
Visited: dir1/dir2/file2
Visited: dir1/file1
filepath.Walk() returned <nil>

原始答案跟随:步行文件路径的接口已经更改为从week.2011-09-16,请参阅http://groups.google.com/group/golang-nuts/msg/e304dd9cf196a218.下面的代码将不适用于发布版本的GO在不久的将来。

实际上在标准库中有一个函数只是为了这个:filepath.Walk

package main

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

type visitor int

// THIS CODE NO LONGER WORKS,PLEASE SEE ABOVE
func (v visitor) VisitDir(path string,f *os.FileInfo) bool {
    println(path)
    return true
} 

func (v visitor) VisitFile(path string,f *os.FileInfo) {
    println(path)
}

func main() {
    root := flag.Arg(0)
    filepath.Walk(root,visitor(0),nil)
}

猜你在找的Go相关文章