Tamaño de archivo en Java

1. Información general

En este tutorial rápido, aprenderemos cómo obtener el tamaño de un archivo en Java , usando Java 7, el nuevo Java 8 y Apache Common IO.

Finalmente, también obtendremos una representación legible por humanos del tamaño del archivo.

2. E / S de Java estándar

Comencemos con un ejemplo simple de cómo calcular el tamaño de un archivo, usando el método File.length () :

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

Podemos probar nuestra implementación de manera relativamente simple:

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

Tenga en cuenta que, de forma predeterminada, el tamaño de los archivos se calcula en bytes.

3. Con Java NIO

A continuación, veamos cómo usar la biblioteca NIO para obtener el tamaño del archivo.

En el siguiente ejemplo, usaremos la API FileChannel.size () para obtener el tamaño de un archivo en 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. Con Apache Commons IO

A continuación, veamos cómo obtener el tamaño del archivo usando Apache Commons IO . En el siguiente ejemplo, simplemente usamos FileUtils.sizeOf () para obtener el tamaño del archivo:

@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); }

Tenga en cuenta que, para archivos de seguridad restringida, FileUtils.sizeOf () informará el tamaño como cero.

5. Tamaño legible por humanos

Finalmente, veamos cómo obtener una representación más legible para el usuario del tamaño del archivo usando Apache Commons IO , no solo un tamaño en 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. Conclusión

En este tutorial, ilustramos ejemplos del uso de Java y Apache Commons IO para calcular el tamaño de un archivo en el sistema de archivos.

La implementación de estos ejemplos se puede encontrar en el proyecto GitHub; este es un proyecto basado en Maven, por lo que debería ser fácil de importar y ejecutar tal como está.