हम विभिन्न golang मानक पुस्तकालय कार्यों का उपयोग करके फ़ाइल सिस्टम पर एक फ़ोल्डर के अंदर फ़ाइलों की एक सूची प्राप्त कर सकते हैं।
- filepath.Walk
- ioutil.ReadDir
- os.File.Readdir
package main
import (
"fmt"
"io/ioutil"
"log"
"os"
"path/filepath"
)
func main() {
var (
root string
files []string
err error
)
root := "/home/manigandan/golang/samples"
// filepath.Walk
files, err = FilePathWalkDir(root)
if err != nil {
panic(err)
}
// ioutil.ReadDir
files, err = IOReadDir(root)
if err != nil {
panic(err)
}
//os.File.Readdir
files, err = OSReadDir(root)
if err != nil {
panic(err)
}
for _, file := range files {
fmt.Println(file)
}
}
- Filepath.Walk का उपयोग करना
path/filepath
पैकेज, यह स्वतः ही निर्देशिका में प्रत्येक उप-निर्देशिका स्कैन करेगा एक निर्देशिका में सभी फ़ाइलों को स्कैन करने के लिए एक आसान तरीका प्रदान करता है।
func FilePathWalkDir(root string) ([]string, error) {
var files []string
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
if !info.IsDir() {
files = append(files, path)
}
return nil
})
return files, err
}
- Ioutil.ReadDir का उपयोग करना
ioutil.ReadDir
dirname नाम की डायरेक्टरी को पढ़ता है और फाइलनाम द्वारा सॉर्ट की गई डायरेक्टरी प्रविष्टियों की सूची देता है।
func IOReadDir(root string) ([]string, error) {
var files []string
fileInfo, err := ioutil.ReadDir(root)
if err != nil {
return files, err
}
for _, file := range fileInfo {
files = append(files, file.Name())
}
return files, nil
}
- Os.File.Readdir का उपयोग करना
रीडडीर फ़ाइल से जुड़ी निर्देशिका की सामग्री को पढ़ता है और n फाइलइन्फो मानों का एक टुकड़ा देता है, जैसा कि निर्देशिका क्रम में Lstat द्वारा लौटाया जाएगा। एक ही फाइल पर बाद में कॉल करने से फाइलइन्फोस आगे बढ़ेगा।
func OSReadDir(root string) ([]string, error) {
var files []string
f, err := os.Open(root)
if err != nil {
return files, err
}
fileInfo, err := f.Readdir(-1)
f.Close()
if err != nil {
return files, err
}
for _, file := range fileInfo {
files = append(files, file.Name())
}
return files, nil
}
बेंचमार्क परिणाम।
इस ब्लॉग पोस्ट पर अधिक जानकारी प्राप्त करें