>我需要写一个函数,当给定一个文件夹的路径
扫描以该文件夹为根的文件。
>然后我需要在该文件夹显示目录结构。
扫描以该文件夹为根的文件。
>然后我需要在该文件夹显示目录结构。
我知道如何做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) }