1. Overview
In this quick tutorial, we'll learn how to get the size of a file in Java – using Java 7, the new Java 8 and Apache Common IO.
Finally – we will also get a human readable representation of the file size.
2. Standard Java IO
Let’s start with a simple example of calculating the size of a file – using the File.length() method:
private long getFileSize(File file) {
long length = file.length();
return length;
}
We can test our implementation relatively simply:
@Test
public void whenGetFileSize_thenCorrect() {
long expectedSize = 12607;
File imageFile = new File("src/test/resources/image.jpg");
long size = getFileSize(imageFile);
assertEquals(expectedSize, size);
}
Note that, by default, the file sizes is calculated in bytes.
3. With Java NIO
Next – let’s see how to use the NIO library to get the size of the file.
In the following example, we'll use the FileChannel.size() API to get the size of a file in bytes:
@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. With Apache Commons IO
Next – let’s see how to get the file size using Apache Commons IO. In the following example – we simply use FileUtils.sizeOf() to get the file size:
@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);
}
Note that, for security restricted files, FileUtils.sizeOf() will report the size as zero.
5. Human Readable Size
Finally – let’s see how to get a more user readable representation of the file size using Apache Commons IO – not just a size in bytes:
@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. Conclusion
In this tutorial, we illustrated examples of using Java and Apache Commons IO to calculate the size of a file in the file system.
The implementation of these examples can be found in the GitHub project – this is a Maven-based project, so it should be easy to import and run as it is.
res – REST with Spring (eBook) (everywhere)