Javaでファイルサイズを取得する場合、昔ながらのFileクラスでも可能ですが、現在の推奨は NIO(java.nio.file) の Path / Files を使う方法です。
NIO の API は例外処理やエンコード、パス結合などが扱いやすく、実務でもこちらを使うのが標準になっています。
本記事では 1行でサイズ取得する最短コードから、人間が読みやすい形式への変換方法、フォルダ配下の合計サイズ取得までまとめて解説します。
◆ 基本:1行でファイルサイズを取得する
最もシンプルなコードはこれです。
-
Files.size(Path)を呼ぶだけ -
戻り値は バイト数(long)
-
ファイルが存在しない場合は
NoSuchFileExceptionが発生
例:try-with-resources なしで完結する単純用途ならこれでOK
◆ 例外処理付きの実務向けサンプル
◆ 人間が読みやすい単位(KB / MB / GB)に変換したい場合
バイト数だと扱いにくいので、表示用に変換するユーティリティを作ると便利です。
使用例:
◆ 複数ファイルの合計サイズを取得したい(フォルダ単位)
フォルダ配下を再帰的に読みながらサイズを足し合わせる方法です。
使い方:
◆ Fileクラス(旧API)と何が違う?
File file = new File("a.txt"); file.length() でも取れますが……
| 方法 | 特徴 |
|---|---|
| File.length() | 古いAPI。シンボリックリンクやエラー処理が弱い |
| Files.size(Path) | 新API。例外扱いやパス操作が扱いやすい(推奨) |
結論:2024年以降の開発なら NIO を使っておくべき。
◆ よくあるエラーと対処
● NoSuchFileException
→ パスが間違っている / 権限不足 / ネットワーク経由で切断 など。
● AccessDeniedException
→ Windows の場合、管理者権限が必要なフォルダ(Program Files など)で起こりがち。
● IOException
→ ファイル読み込み中に OS 側でロックされていることもある(ログファイルなど)。
◆ まとめ
-
ファイルサイズ取得は Files.size(Path) が最もシンプルで推奨
-
バイト数のままでは扱いづらいので 人間向け変換メソッドを用意すると便利
-
ディレクトリの合計サイズは Files.walk() と組み合わせる
