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パラメータでエラーハンドリングを行っているので、用途に応じて適切に対処します。

bannerAds