1. 概要

このクイックチュートリアルでは、Java 7、新しいJava 8、およびApache Common IOを使用して、Java内のファイルのサイズを取得する方法を学習します。

最後に、ファイルサイズの人間が読める形式の表現も取得します。

2. 標準のJavaIO

File.length()メソッドを使用して、ファイルのサイズを計算する簡単な例から始めましょう。

private long getFileSize(File file) {
    long length = file.length();
    return length;
}

実装を比較的簡単にテストできます。

@Test
public void whenGetFileSize_thenCorrect() {
    long expectedSize = 12607;
 
    File imageFile = new File("src/test/resources/image.jpg");
    long size = getFileSize(imageFile);
 
    assertEquals(expectedSize, size);
}

デフォルトでは、ファイルサイズはバイト単位で計算されることに注意してください。

3. JavaNIOを使用

次へ–NIOライブラリを使用してファイルのサイズを取得する方法を見てみましょう。

次の例では、 FileChannel.size() APIを使用して、ファイルのサイズをバイト単位で取得します。

@Test
public void whenGetFileSizeUsingNioApi_thenCorrect() throws IOException {
    long expectedSize = 12607;
 
    Path imageFilePath = Paths.get("src/test/resources/image.jpg");
    FileChannel imageFileChannel = FileChannel.open(imageFilePath);

    long imageFileSize = imageFileChannel.size();
    assertEquals(expectedSize, imageFileSize);
}

4. ApacheCommonsIOを使用

次へ– Apache CommonsIOを使用してファイルサイズを取得する方法を見てみましょう。 次の例では、 FileUtils.sizeOf()を使用してファイルサイズを取得します。

@Test
public void whenGetFileSizeUsingApacheCommonsIO_thenCorrect() {
    long expectedSize = 12607;
 
    File imageFile = new File("src/test/resources/image.jpg");
    long size = FileUtils.sizeOf(imageFile);
 
    assertEquals(expectedSize, size);
}

セキュリティが制限されたファイルの場合、 FileUtils.sizeOf()はサイズをゼロとして報告することに注意してください。

5. 人間が読めるサイズ

最後に、バイト単位のサイズだけでなく、 Apache Commons IO を使用して、ファイルサイズのよりユーザーが読みやすい表現を取得する方法を見てみましょう。

@Test
public void whenGetReadableFileSize_thenCorrect() {
    File imageFile = new File("src/test/resources/image.jpg");
    long size = getFileSize(imageFile);
 
    assertEquals("12 KB", FileUtils.byteCountToDisplaySize(size));
}

6. 結論

このチュートリアルでは、JavaとApacheCommonsIOを使用してファイルシステム内のファイルのサイズを計算する例を示しました。

これらの例の実装は、 GitHubプロジェクトにあります。これはMavenベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。