golang中的fs.ReadDir

打印 上一主题 下一主题

主题 912|帖子 912|积分 2736

平时习惯了./和../作为访问目录的路径,但今天使用golang中fs.ReadDir这个函数的时候发现这个习惯是不正确的。
但是常用的命令并没有分很清楚.和./
在这几个命令中使用.或./都可以到达目录下
ls
cd
错误示范
  1. package main
  2. import (
  3.         "fmt"
  4.         "io/fs"
  5.         "os"
  6. )
  7. func main() {
  8.         fsfile := os.DirFS("./")
  9.         dir, err := fs.ReadDir(fsfile, "./")
  10.         if err != nil {
  11.                 return
  12.         }
  13.         for _, file := range dir {
  14.                 fmt.Println(file.Name())
  15.         }
  16. }
复制代码
这样写的话err会出现如下提示(奇怪的是在使用1.22.1rc这个版本中,没有任何提示,而在1.21.5版本中会出现提示没有这个目录)
  1. readdir ./: invalid argument
复制代码
这是正确的代码
  1. package main
  2. import (
  3.         "fmt"
  4.         "io/fs"
  5.         "os"
  6. )
  7. func main() {
  8.         fsfile := os.DirFS(".") //这里使用./或者.都可以
  9.         dir, err := fs.ReadDir(fsfile, ".")
  10.         if err != nil {
  11.                 return
  12.         }
  13.         for _, file := range dir {
  14.                 fmt.Println(file.Name())
  15.         }
  16. }
复制代码
后面查询了一下,.和..是表示目录,而./和../表示目录下,应该是这个原因吧

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

锦通

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表