ファイルのサイズを取得する(Files.size)

広告

Files クラスで用意されている size メソッドを使用することで、指定したファイルのサイズ(バイト単位)を取得することができます。やディレクトリが存在するか確認することができます。ここでは Java を使ってファイルのサイズを取得する方法について解説します。

ファイルのサイズを取得する

ファイルのサイズを取得するには Files クラスで用意されている size メソッドを使用します。 size メソッドはクラスメソッドです。書式は次のとおりです。

public static long size?(Path path) throws IOException

パラメータ:
path - ファイルへのパス

戻り値:
ファイル・サイズ(バイト)

例外:
IOException - 入出力エラーが発生した場合
SecurityException - デフォルト・プロバイダで、セキュリティ・マネージャがインストールされていて、そのcheckReadメソッドがファイルへの読取りアクセスを拒否する場合

1 番目の引数にサイズを調べるファイルを表す Path オブジェクトを指定します。メソッドを実行すると、指定したパスが表すファイルのサイズをバイト単位で返します。なおディレクトリを表す Path オブジェクトを指定した場合は 0 が返されました。

※ Path オブジェクトを使ってファイルやディレクトリを表す方法については「Pathオブジェクトを使ってファイルやディレクトリを表す」を参照されてください。

次のサンプルをみてください。

Path p = Paths.get("C:/code/java/file/report.txt");

try{
  System.out.println(Files.size(p));
}catch(IOException e){
  System.out.println(e);
}

C:\code\java\file ディレクトリの中の report.txt ファイルのサイズを取得し画面に表示します。存在しないファイルを指定した場合は例外が発生するため、必要であればファイルの存在を確認した上でサイズを取得されてください。

サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample9-1.java という名前で保存します。

import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.Files;
import java.io.IOException;
import java.util.stream.Stream;

class JSample9_1{
  public static void main(String[] args){
    Path dirpath = Paths.get("doc");

    try (Stream<Path> stream = Files.list(dirpath)){
      stream.forEach(p -> {
        try{
          System.out.print(p.getFileName() + " : ");
          System.out.println(Files.size(p) + " byte");
        }catch(IOException e) {
          System.out.println(e);
        }
      });
    }catch(IOException e) {
      System.out.println(e);
    }
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample9_1.java

その後で、次のように実行してください。

java JSample9_1

ファイルのサイズを取得する(1)

今回のサンプルでは指定したディレクトリに含まれるファイルを順に取得し、ファイル毎のサイズを取得して画面に表示しました。実際にディレクトリに含まれるファイルの一覧とファイルサイズが一致していることが確認できます。

ファイルのサイズを取得する(2)

※ ディレクトリに含まれるファイルの一覧を取得する方法については「ディレクトリに含まれるファイルやディレクトリの一覧を取得する(Files.list,Files.walk)」を参照されてください。

-- --

Java を使ってファイルのサイズを取得する方法について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。