Javaのファイルサイズ
1. 概要
このクイックチュートリアルでは、size of a file in Javaを取得する方法を学習します– Java 7、新しいJava 8、およびApache CommonIOを使用します。
最後に、人間が読める形式のファイルサイズも取得します。
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. Apache CommonsIOを使用
次へ–Apache Commons IOを使用してファイルサイズを取得する方法を見てみましょう。 次の例では、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とApache Commons IOを使用してファイルシステム内のファイルのサイズを計算する例を示しました。
これらの例の実装はthe GitHub projectにあります。これはMavenベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。