「ファイル操作」タグアーカイブ

Java:ファイルサイズを簡単に取得する方法|NIO Path/Files

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() と組み合わせる

PowerShellでテキストファイルから特定の行だけ抽出する方法

テキストファイルを処理して「特定の行だけ抜き出したい」という場面は、ログ解析やデータ処理を行う際によくあります。PowerShellを使えば、シンプルなコマンドで効率的に抽出可能です。本記事では、PowerShellによる代表的な方法を解説します。


基本的な考え方

PowerShellでは、Get-Content コマンドレットでテキストファイルを1行ずつ取得できます。そこから条件を指定して、欲しい行をフィルタリングすれば目的の行を抽出できます。


方法1:行番号で抽出する

特定の行番号を指定して抽出するには配列インデックスを利用します。PowerShellは0から数えるので注意しましょう。

複数行をまとめて取得することも可能です。


方法2:条件で抽出する(文字列検索)

キーワードを含む行だけを抽出するには Select-String を使います。

この場合、ヒットした行番号と内容が出力されます。内容だけ欲しい場合は以下のように書けます。

 

方法3:正規表現で抽出する

複雑な条件にマッチさせたい場合は正規表現を活用できます。


方法4:範囲指定で抽出する

特定の行範囲を取り出したい場合は Select-Object を利用します。


まとめ

  • 行番号で取得 → 配列インデックス

  • キーワードで取得Select-String

  • 複雑条件 → 正規表現

  • 範囲指定Select-Object

PowerShellを使えば、テキストファイルの解析や必要な行だけの抽出を簡単に自動化できます。ログファイル処理やデータ前処理など、日々の作業効率化にぜひ活用してみてください。