大型目錄中的高效文件清單
以程式設計方式導覽包含大量文件的目錄可能會帶來效能挑戰。為了克服這些限制,必須了解 Go 中的底層目錄讀取機制。
避免 Readdirnames
使用 filepath.Walk 的傳統方法依賴 ioutil。 ReadDir 和 filepath.Glob 函數,傳回檔案片段。然而,這些函數在處理過大的目錄時會受到記憶體限制。
不要使用在緩衝數組上操作的 ReadDirnames,而是直接考慮低階 Readdir 或 Readdirnames 方法。這些方法允許指定大於 0 的批次大小 (n),從而能夠批次檢索目錄條目。
範例程式碼
以下程式碼片段示範如何使用 Readdir 讀取目錄條目:
package main
import (
"fmt"
"io/ioutil"
"os"
)
func main() {
files, err := ioutil.ReadDir("directory_path")
if err != nil {
fmt.Println(err)
return
}
for _, file := range files {
fmt.Println(file.Name())
}
}
透過指定足夠的批次大小(例如 10000),您可以有效地處理大型目錄列表,而不會遇到記憶體問題。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3