平時習慣了./和../作為訪問目錄的路徑,但今天使用golang中fs.ReadDir這個函數的時候發現這個習慣是不正確的。 但是常用的命令並沒有分很清楚.和./ 在這幾個命令中使用.或./都可以到達目錄下 ls cd 錯誤示範 package main import ( "fmt" "io/fs" ...
平時習慣了./
和../
作為訪問目錄的路徑,但今天使用golang中fs.ReadDir這個函數的時候發現這個習慣是不正確的。
但是常用的命令並沒有分很清楚.和./
在這幾個命令中使用.或./都可以到達目錄下
ls
cd
錯誤示範
package main
import (
"fmt"
"io/fs"
"os"
)
func main() {
fsfile := os.DirFS("./")
dir, err := fs.ReadDir(fsfile, "./")
if err != nil {
return
}
for _, file := range dir {
fmt.Println(file.Name())
}
}
這樣寫的話err會出現如下提示(奇怪的是在使用1.22.1rc這個版本中,沒有任何提示,而在1.21.5版本中會出現提示沒有這個目錄)
readdir ./: invalid argument
這是正確的代碼
package main
import (
"fmt"
"io/fs"
"os"
)
func main() {
fsfile := os.DirFS(".") //這裡使用./或者.都可以
dir, err := fs.ReadDir(fsfile, ".")
if err != nil {
return
}
for _, file := range dir {
fmt.Println(file.Name())
}
}
後面查詢了一下,.和..是表示目錄,而./和../表示目錄下,應該是這個原因吧