第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何檢查路徑上的目錄是否為空?

如何檢查路徑上的目錄是否為空?

Go
嗶嗶one 2021-10-11 13:53:40
如果文件夾為空,如何檢查 Go?我可以檢查:files, err := ioutil.ReadDir(*folderName)if err != nil {    return nil, err}// here check len of files 但在我看來應(yīng)該有更優(yōu)雅的解決方案。
查看完整描述

1 回答

?
蝴蝶刀刀

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊

目錄是否為空不會(huì)作為名稱、創(chuàng)建時(shí)間或大?。ㄈ绻俏募┑葘傩源鎯?chǔ)在文件系統(tǒng)級(jí)別。


話雖如此,您不能僅從os.FileInfo. 最簡(jiǎn)單的方法是查詢目錄的子項(xiàng)(內(nèi)容)。


ioutil.ReadDir()這是一個(gè)非常糟糕的選擇,因?yàn)樗紫茸x取指定目錄的所有內(nèi)容,然后按名稱對(duì)它們進(jìn)行排序,然后返回切片。最快的方法是 Dave C 提到的:使用File.Readdir()or (最好)查詢目錄的子級(jí)File.Readdirnames()。


二者File.Readdir()并File.Readdirnames()采取其用于限制返回值的數(shù)量的參數(shù)。僅查詢 1 個(gè)孩子就足夠了。由于Readdirnames()僅返回名稱,因此速度更快,因?yàn)椴恍枰M(jìn)一步調(diào)用來獲?。ê蜆?gòu)造)FileInfo結(jié)構(gòu)。


請(qǐng)注意,如果目錄為空,io.EOF則作為錯(cuò)誤返回(而不是空或nil切片),因此我們甚至不需要返回的名稱切片。


最終代碼可能如下所示:


func IsEmpty(name string) (bool, error) {

    f, err := os.Open(name)

    if err != nil {

        return false, err

    }

    defer f.Close()


    _, err = f.Readdirnames(1) // Or f.Readdir(1)

    if err == io.EOF {

        return true, nil

    }

    return false, err // Either not empty or error, suits both cases

}


查看完整回答
反對(duì) 回復(fù) 2021-10-11
  • 1 回答
  • 0 關(guān)注
  • 248 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)