フォルダの合計サイズを知りたい

C#と他の言語で、フォルダ内のサイズを調べられないか調査したときのメモです

フォルダの中にあるファイルの合計サイズを知りたい。

ということで、いろいろと考えた件のメモです。


まず、ルールを最初にまとめます。

アクセス権の関係で例外エラーが発生することが考えられるため、
エラーとなってしまうファイルやディレクトリについては、
0バイトとしてカウントすることにしました。

次に、検索したいフォルダですが、
他のサーバーで管理している共有フォルダを対象にします。
ただし、C$といった管理共有は除くようにします。

さて、単純にフォルダを選択して右クリックのプロパティで
サイズが….わからないんですね;

さて、どうしようかなと思ったのですが、
以外にもWindowsAPIとかで、そのような機能は見当たりませんでした。

ということで、C#で共有フォルダを探して各共有フォルダ内のサイズを
すべて足し算するプログラムを作りました。

https://gist.github.com/223n/d97ebf3b4a9c7dee8fbc02cb3bc31545

C#でも階層が深い場合に十分程度かかってしまいました。
そこで、次にほかの言語で同じようなことをやっている人が
いないものか探してみました。

ということで、最初はPowerShellでどうにかできないか試行錯誤した結果です。
コード1の方は、どうも階層が深いと正しく計算できていない様子。
暇を見て直したいと思います。

https://gist.github.com/223n/81ad1547065a6144774793cedede4c38

Ref. (コード1) tech.guitarrapc.cóm – PowerShell で フォルダの容量一覧を取得したい

その次は、Goでもどうにかできないかと調べてみると、
どうやら次のコードでできるようです。
ただ、開発環境がおかしいのか、ちゃんと実行できていません…

https://gist.github.com/223n/55ae071918dbea96c65e9eed0b69856e

Ref. stack overflow – Golang: How to get directory total size?

次に、やっぱり高速処理と言ったらCやC++ダヨネー
というかれこれ数十年ほどご無沙汰だったC++を触りました。
ただ、アクセスまわりのエラー発生時に対応しきれていません。

https://gist.github.com/223n/467ce5f2aa19c7a954b10b61be1c2f65

Ref. stack overflow – How can I find the size of all files located inside a folder?

最後に、Python3も試してみました。

https://gist.github.com/223n/2955ca7bf96ac1a796f8f6ab3ed41396

Ref. stack overflow – Calculating a directory size using Python?

もう少し、手軽に調べられる方法があればいいのですが…