使用Go 1.8.1,我試圖編寫處理文件的東西。問題是,雖然filepath.Walk(...)
工作正常,我需要更靈活一點。所以我轉向ioutil.ReadDir(...)
,只爲迎接一個壯觀的「panic: runtime error: invalid memory address or nil pointer dereference
」。我已經嘗試過替代方案(filepath.Glob(...)
,file.Readdirnames(...)
),它們都會導致相同的錯誤。 什麼是令人費解的是filepath.Walk(...)
使用os.Lstat(...)
,但是當我嘗試直接使用os.Lstat(...)
...我得到了上述相同的錯誤。 我已經在更新的Ubuntu 16.04 LTS和更新的Fedora 25上嘗試了這一點,但沒有任何區別。列出文件夾內容時出錯
我Go-fu真的很弱(這是我的第一個應用程序,除了「hello world」),所以任何幫助表示讚賞。
下面是一些代碼失敗:
func glob() {
infos, err := filepath.Glob("*")
if err != nil {
for _, info := range infos {
fmt.Println(info)
}
} else {
log.Fatal(err.Error())
}
}
func y() {
file, err := os.Open(folder)
println(file.Name())
defer file.Close()
infos, err := file.Readdirnames(0)
//infos, err := ioutil.ReadDir(folder)
if err != nil {
for _, info := range infos {
fmt.Println(info)
}
} else {
log.Fatal(err.Error())
}
}
func readDir() {
infos, err := ioutil.ReadDir(folder)
if err != nil {
for _, info := range infos {
fmt.Println(info)
}
} else {
log.Fatal(err.Error())
}
}
和這裏的什麼作品:
func walk() {
err := filepath.Walk(folder, printWalk)
if err != nil {
log.Fatal(os.Stderr, "walk failed with error: %v\n", err)
}
}
func printWalk(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
fmt.Println("path:", path, "FileInfo.Name:", info.Name())
return nil
}
你能發表一些代碼嗎? – Tobias
您能否使用該代碼更新/編輯您的問題? – Tobias
愚蠢的問題:看看'文件夾'是一個全局變量,它可能沒有得到初始化'readDir'函數調用? – maksimov