HOWTO · Java

Java でファイル サイズを取得する

このチュートリアルでは、Java でファイル サイズを取得する方法を示します。

このページの内容

Java には、ファイルのサイズをバイト単位で取得するためのさまざまなメソッドが用意されています。 このチュートリアルでは、Java でファイル サイズを取得するさまざまな方法を示します。

Java IO の File クラスを使用してファイル サイズを取得する

Java IO パッケージの File クラスは、ファイルのサイズをバイト単位で取得する機能を提供します。 File クラスには、ファイルのサイズをバイト単位で返すメソッド length があります。

File がディレクトリの場合、length() メソッドは未指定の値を返します。 したがって、サイズを確認する前に、ファイルが存在し、ディレクトリではないことを確認してください。

サイズが 240 キロバイトのファイル delftstack.pdf を選択しました。 Java の File クラスを使用して、このファイルのサイズを確認する例を試してみましょう。

package delftstack;

import java.io.File;

public class Example {
  public static void main(String[] args) {
    String File_Name = "delftstack.pdf";
    Get_FileSize(File_Name);
  }

  public static void Get_FileSize(String File_Name) {
    File Demo_File = new File(File_Name);

    if (Demo_File.exists()) {
      // size of a file using different units
      long File_Bytes = Demo_File.length();

      long Kilo_Bytes = (File_Bytes / 1024);
      long Mega_Bytes = (Kilo_Bytes / 1024);
      long Giga_Bytes = (Mega_Bytes / 1024);
      long Tera_Bytes = (Giga_Bytes / 1024);
      long Peta_Bytes = (Tera_Bytes / 1024);
      long Exa_Bytes = (Peta_Bytes / 1024);
      long Zetta_Bytes = (Exa_Bytes / 1024);
      long Yotta_Bytes = (Zetta_Bytes / 1024);

      System.out.println(String.format("%,d Size in bytes", File_Bytes));
      System.out.println(String.format("%,d Size in kilobytes", Kilo_Bytes));
      System.out.println(String.format("%,d Size in megabytes", Mega_Bytes));
      System.out.println(String.format("%,d Size in gigabytes", Giga_Bytes));
      System.out.println(String.format("%,d Size in terabytes", Tera_Bytes));
      System.out.println(String.format("%,d Size in petabytes", Peta_Bytes));
      System.out.println(String.format("%,d Size in exabytes", Exa_Bytes));
      System.out.println(String.format("%,d Size in zettabytes", Zetta_Bytes));
      System.out.println(String.format("%,d Size in yottabytes", Yotta_Bytes));

    } else {
      System.out.println("The input File does not exist!");
    }
  }
}

上記のコードは、最初に Java IO を使用して特定のファイルのサイズをバイト単位で計算し、次にそれを他の単位に変換します。 出力を参照してください:

245,681 Size in bytes
239 Size in kilobytes
0 Size in megabytes
0 Size in gigabytes
0 Size in terabytes
0 Size in petabytes
0 Size in exabytes
0 Size in zettabytes
0 Size in yottabytes

Java NIO の Files クラスを使用してファイル サイズを取得する

Java NIO パッケージ クラス Files には、ファイルのサイズを取得するメソッド size() があります。 size() メソッドは、ファイル サイズをバイト単位で返します。

同じファイルで例を試してみましょう。

package delftstack;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Example {
  public static void main(String[] args) {
    String File_Name = "delftstack.pdf";
    Get_FileSize(File_Name);
  }

  public static void Get_FileSize(String File_Name) {
    Path File_Path = Paths.get(File_Name);

    try {
      // size of a file using different units
      long File_Bytes = Files.size(File_Path);

      long Kilo_Bytes = (File_Bytes / 1024);
      long Mega_Bytes = (Kilo_Bytes / 1024);
      long Giga_Bytes = (Mega_Bytes / 1024);
      long Tera_Bytes = (Giga_Bytes / 1024);
      long Peta_Bytes = (Tera_Bytes / 1024);
      long Exa_Bytes = (Peta_Bytes / 1024);
      long Zetta_Bytes = (Exa_Bytes / 1024);
      long Yotta_Bytes = (Zetta_Bytes / 1024);

      System.out.println(String.format("%,d Size in bytes", File_Bytes));
      System.out.println(String.format("%,d Size in kilobytes", Kilo_Bytes));
      System.out.println(String.format("%,d Size in megabytes", Mega_Bytes));
      System.out.println(String.format("%,d Size in gigabytes", Giga_Bytes));
      System.out.println(String.format("%,d Size in terabytes", Tera_Bytes));
      System.out.println(String.format("%,d Size in petabytes", Peta_Bytes));
      System.out.println(String.format("%,d Size in exabytes", Exa_Bytes));
      System.out.println(String.format("%,d Size in zettabytes", Zetta_Bytes));
      System.out.println(String.format("%,d Size in yottabytes", Yotta_Bytes));
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

上記のコードは、Java NIO パッケージの Files.size() メソッドを使用して、Java でファイルのサイズを取得します。 出力を参照してください:

245,681 Size in bytes
239 Size in kilobytes
0 Size in megabytes
0 Size in gigabytes
0 Size in terabytes
0 Size in petabytes
0 Size in exabytes
0 Size in zettabytes
0 Size in yottabytes

NIO パッケージには、Java でファイルのサイズを取得するために使用できる別のクラス FileChannel もあります。 Java でファイルのサイズを取得する同様のメソッド size() があります。

package delftstack;

import java.io.IOException;
import java.nio.channels.FileChannel;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Example {
  public static void main(String[] args) {
    String File_Name = "delftstack.pdf";
    Get_FileSize(File_Name);
  }

  public static void Get_FileSize(String File_Name) {
    Path File_Path = Paths.get(File_Name);
    FileChannel File_Channel;

    try {
      // size of a file using different units
      File_Channel = FileChannel.open(File_Path);
      long File_Bytes = File_Channel.size();
      File_Channel.close();

      long Kilo_Bytes = (File_Bytes / 1024);
      long Mega_Bytes = (Kilo_Bytes / 1024);
      long Giga_Bytes = (Mega_Bytes / 1024);
      long Tera_Bytes = (Giga_Bytes / 1024);
      long Peta_Bytes = (Tera_Bytes / 1024);
      long Exa_Bytes = (Peta_Bytes / 1024);
      long Zetta_Bytes = (Exa_Bytes / 1024);
      long Yotta_Bytes = (Zetta_Bytes / 1024);

      System.out.println(String.format("%,d Size in bytes", File_Bytes));
      System.out.println(String.format("%,d Size in kilobytes", Kilo_Bytes));
      System.out.println(String.format("%,d Size in megabytes", Mega_Bytes));
      System.out.println(String.format("%,d Size in gigabytes", Giga_Bytes));
      System.out.println(String.format("%,d Size in terabytes", Tera_Bytes));
      System.out.println(String.format("%,d Size in petabytes", Peta_Bytes));
      System.out.println(String.format("%,d Size in exabytes", Exa_Bytes));
      System.out.println(String.format("%,d Size in zettabytes", Zetta_Bytes));
      System.out.println(String.format("%,d Size in yottabytes", Yotta_Bytes));

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

上記のコードは、NIO パッケージの FileChannel クラスを使用してサイズをバイト単位で取得します。 出力を参照してください:

245,681 Size in bytes
239 Size in kilobytes
0 Size in megabytes
0 Size in gigabytes
0 Size in terabytes
0 Size in petabytes
0 Size in exabytes
0 Size in zettabytes
0 Size in yottabytes

Apache Commons IO の FileUtils クラスを使用してファイル サイズを取得する

Apache Commons IO は多くの機能を提供します。FileUtils は、Java でファイル操作を処理するために使用される機能の 1つです。 Apache Commons の FileUtils クラスには Sizeof() メソッドがあり、ファイルのサイズをバイト単位で取得できます。

Apache Commons IO を使用して Java でファイルのサイズを取得する例を試してみましょう。

package delftstack;

import java.io.File;
import org.apache.commons.io.FileUtils;

public class Example {
  public static void main(String[] args) {
    String File_Name = "delftstack.pdf";
    Get_FileSize(File_Name);
  }

  public static void Get_FileSize(String File_Name) {
    File Demo_File = new File(File_Name);

    try {
      // size of a file using different units
      long File_Bytes = FileUtils.sizeOf(Demo_File);

      long Kilo_Bytes = (File_Bytes / 1024);
      long Mega_Bytes = (Kilo_Bytes / 1024);
      long Giga_Bytes = (Mega_Bytes / 1024);
      long Tera_Bytes = (Giga_Bytes / 1024);
      long Peta_Bytes = (Tera_Bytes / 1024);
      long Exa_Bytes = (Peta_Bytes / 1024);
      long Zetta_Bytes = (Exa_Bytes / 1024);
      long Yotta_Bytes = (Zetta_Bytes / 1024);

      System.out.println(String.format("%,d Size in bytes", File_Bytes));
      System.out.println(String.format("%,d Size in kilobytes", Kilo_Bytes));
      System.out.println(String.format("%,d Size in megabytes", Mega_Bytes));
      System.out.println(String.format("%,d Size in gigabytes", Giga_Bytes));
      System.out.println(String.format("%,d Size in terabytes", Tera_Bytes));
      System.out.println(String.format("%,d Size in petabytes", Peta_Bytes));
      System.out.println(String.format("%,d Size in exabytes", Exa_Bytes));
      System.out.println(String.format("%,d Size in zettabytes", Zetta_Bytes));
      System.out.println(String.format("%,d Size in yottabytes", Yotta_Bytes));
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

上記のコードは、Java の FileUtils クラスを使用して、指定されたファイルのサイズを取得します。 出力を参照してください:

245,681 Size in bytes
239 Size in kilobytes
0 Size in megabytes
0 Size in gigabytes
0 Size in terabytes
0 Size in petabytes
0 Size in exabytes
0 Size in zettabytes
0 Size in yottabytes