用go语言实现读取 upload 文件夹下的文件并按文件大小排序
时间: 2024-09-15 22:09:37 浏览: 38
在Go语言中,你可以使用`os`, `io/ioutil`, 和 `sort` 包来实现这个功能。这里是一个简单的示例,它首先遍历`upload`文件夹下的所有文件,然后根据文件大小进行排序:
```go
package main
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"sort"
)
// 定义一个结构体来存储文件信息,包括名称和大小
type FileInfo struct {
Name string
Size int64
}
func listAndSortUploadFolder() error {
rootDir := "upload"
// 获取上传目录下的所有文件和子目录
filepath.Walk(rootDir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
// 如果是文件而不是目录
if !info.IsDir() {
fInfo := FileInfo{Name: path[len(rootDir)+1:], Size: info.Size()} // 路径减去根目录,并获取文件大小
sortFileInfo(&fInfo)
fmt.Printf("%s: %d bytes\n", fInfo.Name, fInfo.Size)
}
return nil
})
return nil
}
// 自定义排序函数,按照文件大小降序排列
func sortFileInfo(fi *FileInfo) {
sort.SliceStable([]FileInfo{*fi}, func(i, j int) bool { return fi[i].Size > fi[j].Size })
}
func main() {
err := listAndSortUploadFolder()
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Files sorted by size.")
}
}
```
阅读全文