chi*_*may 98 directory file go
我知道怎么做2(我将使用jstree在浏览器中显示它).
请帮我解决第1部分,比如在什么/哪里开始编写这样的函数.
las*_*owh 189
编辑:足够的人仍然听到这个答案,我以为我会为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)
}
Run Code Online (Sandbox Code Playgroud)
请注意,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>
Run Code Online (Sandbox Code Playgroud)
原始答案后续:步行文件路径的界面已于每周更新.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)
}
Run Code Online (Sandbox Code Playgroud)
pet*_*rSO 15
这是获取目录中文件的文件信息的一种方法.
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
dirname := "." + string(filepath.Separator)
d, err := os.Open(dirname)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer d.Close()
fi, err := d.Readdir(-1)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
for _, fi := range fi {
if fi.Mode().IsRegular() {
fmt.Println(fi.Name(), fi.Size(), "bytes")
}
}
}
Run Code Online (Sandbox Code Playgroud)
Fra*_*ois 12
下面是一个循环遍历所有文件和目录的示例.请注意,如果您想知道您要追加的路径是否是目录,请选中"f.IsDir()".
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
searchDir := "c:/path/to/dir"
fileList := []string{}
err := filepath.Walk(searchDir, func(path string, f os.FileInfo, err error) error {
fileList = append(fileList, path)
return nil
})
for _, file := range fileList {
fmt.Println(file)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72589 次 |
| 最近记录: |