Dimensione file in Java

1. Panoramica

In questo breve tutorial, impareremo come ottenere la dimensione di un file in Java , utilizzando Java 7, il nuovo Java 8 e Apache Common IO.

Infine, otterremo anche una rappresentazione leggibile dall'uomo della dimensione del file.

2. Standard Java IO

Cominciamo con un semplice esempio di calcolo della dimensione di un file, utilizzando il metodo File.length () :

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

Possiamo testare la nostra implementazione in modo relativamente semplice:

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

Notare che, per impostazione predefinita, le dimensioni dei file vengono calcolate in byte.

3. Con Java NIO

Successivamente, vediamo come utilizzare la libreria NIO per ottenere la dimensione del file.

Nel seguente esempio, useremo l' API FileChannel.size () per ottenere la dimensione di un file in byte:

@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

Successivamente, vediamo come ottenere la dimensione del file utilizzando Apache Commons IO . Nel seguente esempio, usiamo semplicemente FileUtils.sizeOf () per ottenere la dimensione del file:

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

Notare che, per i file con limitazioni di sicurezza, FileUtils.sizeOf () riporterà la dimensione come zero.

5. Dimensione leggibile dall'uomo

Infine, vediamo come ottenere una rappresentazione più leggibile dall'utente della dimensione del file utilizzando Apache Commons IO - non solo una dimensione in byte:

@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. Conclusione

In questo tutorial, abbiamo illustrato esempi di utilizzo di Java e Apache Commons IO per calcolare la dimensione di un file nel file system.

L'implementazione di questi esempi può essere trovata nel progetto GitHub: questo è un progetto basato su Maven, quindi dovrebbe essere facile da importare ed eseguire così com'è.