Go言語でファイルのサイズを再帰的に取得する方法
Go言語では、osパッケージのStat関数を用いて、ファイルの情報(ファイルサイズなど)を取得可能です。さらに、filepathパッケージのWalk関数を用いて、フォルダ内のすべてのファイルを巡回することで、osパッケージのファイル操作関数と組み合わせれば、各ファイルのサイズを取得する機能を実現可能となります。
例のコードを以下に示します。
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
root := "/path/to/folder" // 需要遍历的文件夹路径
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
// 判断是否为文件
if !info.IsDir() {
size := info.Size() // 获取文件大小
fmt.Printf("File: %s, Size: %d bytes\n", path, size)
}
return nil
})
if err != nil {
fmt.Printf("Error: %s\n", err)
}
}
例のコードでは、ルート変数を実際のフォルダパスに変更する必要があります。その変更が完了したら、filepath.Walk関数はフォルダ内を検索し、それぞれのinfo.Size()を使用して各ファイルのサイズを取得します。ファイルパスとファイルサイズは出力されます。
なお、上記のコードではerrパラメータでエラーハンドリングを行っているので、用途に応じて適切に対処します。