Tamanho do arquivo em Java
1. Visão geral
Neste tutorial rápido, aprenderemos como obter osize of a file in Java - usando o Java 7, o novo Java 8 e o Apache Common IO.
Finalmente - também obteremos uma representação legível por humanos do tamanho do arquivo.
2. Java IO padrão
Vamos começar com um exemplo simples de cálculo do tamanho de um arquivo - usando o métodoFile.length():
private long getFileSize(File file) {
long length = file.length();
return length;
}
Podemos testar nossa implementação de maneira relativamente simples:
@Test
public void whenGetFileSize_thenCorrect() {
long expectedSize = 12607;
File imageFile = new File("src/test/resources/image.jpg");
long size = getFileSize(imageFile);
assertEquals(expectedSize, size);
}
Observe que, por padrão, os tamanhos dos arquivos são calculados em bytes.
3. Com Java NIO
A seguir, veja como usar a biblioteca NIO para obter o tamanho do arquivo.
No exemplo a seguir, usaremos a APIFileChannel.size() para obter o tamanho de um arquivo em 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. Com Apache Commons IO
A seguir - vamos ver como obter o tamanho do arquivo usandoApache Commons IO. No exemplo a seguir - simplesmente usamosFileUtils.sizeOf() para obter o tamanho do arquivo:
@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);
}
Observe que, para arquivos de restrição de segurança,FileUtils.sizeOf() relatará o tamanho como zero.
5. Tamanho legível por humanos
Finalmente - vamos ver como obter uma representação mais legível do usuário do tamanho do arquivo usandoApache Commons IO - não apenas um tamanho em 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. Conclusão
Neste tutorial, ilustramos exemplos de uso de Java e Apache Commons IO para calcular o tamanho de um arquivo no sistema de arquivos.
A implementação desses exemplos pode ser encontrada emthe GitHub project - este é um projeto baseado em Maven, portanto, deve ser fácil de importar e executar como está.