Javaのファイルサイズ
1概要
このクイックチュートリアルでは、Java 7、新しいJava 8、およびApache Common IOを使用して、Javaでファイルのサイズを取得する方法を学習します。
最後に – ファイルサイズの人間が読める形式の表現も得られます。
** 2標準Java IO
**
httpsを使用して、ファイルのサイズを計算する簡単な例から始めましょう。 )]
方法:
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 Java NIO
を使う
次に、NIOライブラリを使用してファイルのサイズを取得する方法を見てみましょう。
次の例では、__httpsを使用します。//docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html#size()ファイルのサイズをバイト数で取得する
@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 Commons IO
を使う
次に、Apache Commons IOを使ってファイルサイズを取得する方法を見てみましょう。次の例では、単に
httpsを使用します。//commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html#sizeOf(java.io.File)[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の使用例を示しました。
これらの例の実装はhttps://github.com/eugenp/tutorials/tree/master/core-java-io[GitHubプロジェクト]にあります – これはMavenベースのプロジェクトなので、簡単に実行できます。そのままインポートして実行します。