เราสามารถรับรายชื่อไฟล์ภายในโฟลเดอร์ในระบบไฟล์โดยใช้ฟังก์ชั่นไลบรารีมาตรฐานต่างๆของ 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
Readdir อ่านเนื้อหาของไดเรกทอรีที่เกี่ยวข้องกับไฟล์และคืนค่าส่วนต่างของค่า FileInfo สูงสุด n ค่าตามที่ Lstat ส่งคืนตามลำดับของไดเร็กทอรี การเรียกไฟล์ที่ตามมาครั้งต่อไปจะให้ผล FileInfos เพิ่มเติม
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
}
ผลการทดสอบเกณฑ์มาตรฐาน
รับรายละเอียดเพิ่มเติมเกี่ยวกับโพสต์บล็อกนี้