微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

文件系统在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)
}

原文地址:https://www.jb51.cc/go/188327.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐