Bestandsgrootte in Java

1. Overzicht

In deze korte zelfstudie leren we hoe u het grootte van een bestand in Java - met behulp van Java 7, de nieuwe Java 8 en Apache Common IO.

Ten slotte krijgen we ook een voor mensen leesbare weergave van de bestandsgrootte.

2. Standaard Java IO

Laten we beginnen met een eenvoudig voorbeeld van het berekenen van de grootte van een bestand - met behulp van de Bestand.lengte () methode:

private long getFileSize (bestandsbestand) {long length = file.length (); retour lengte; }

We kunnen onze implementatie relatief eenvoudig testen:

@ Test openbare leegte whenGetFileSize_thenCorrect () {lang verwachte grootte = 12607; Bestand imageFile = nieuw bestand ("src / test / resources / image.jpg"); lange grootte = getFileSize (imageFile); assertEquals (verwachte grootte, grootte); }

Merk op dat de bestandsgrootte standaard wordt berekend in bytes.

3. Met Java NIO

Vervolgens - laten we eens kijken hoe we de NIO-bibliotheek kunnen gebruiken om de grootte van het bestand te krijgen.

In het volgende voorbeeld gebruiken we de FileChannel.size () API om de grootte van een bestand in bytes te krijgen:

@Test openbare leegte whenGetFileSizeUsingNioApi_thenCorrect () gooit IOException {lang verwachteSize = 12607; Pad imageFilePath = Paths.get ("src / test / resources / image.jpg"); FileChannel imageFileChannel = FileChannel.open (imageFilePath); lange imageFileSize = imageFileChannel.size (); assertEquals (verwachteSize, imageFileSize); } 

4. Met Apache Commons IO

Vervolgens - laten we eens kijken hoe we de bestandsgrootte kunnen krijgen met Apache Commons IO. In het volgende voorbeeld gebruiken we gewoon FileUtils.sizeOf () om de bestandsgrootte te krijgen:

@Test openbare leegte whenGetFileSizeUsingApacheCommonsIO_thenCorrect () {lang verwachteSize = 12607; Bestand imageFile = nieuw bestand ("src / test / resources / image.jpg"); lange grootte = FileUtils.sizeOf (imageFile); assertEquals (verwachte grootte, grootte); }

Houd er rekening mee dat voor bestanden met beperkte beveiliging FileUtils.sizeOf () rapporteert de grootte als nul.

5. Door mensen leesbare grootte

Tot slot - laten we eens kijken hoe we een beter leesbare weergave van de bestandsgrootte kunnen krijgen met behulp van Apache Commons IO - niet alleen een grootte in bytes:

@Test public void whenGetReadableFileSize_thenCorrect () {File imageFile = nieuw bestand ("src / test / resources / image.jpg"); lange grootte = getFileSize (imageFile); assertEquals ("12 KB", FileUtils.byteCountToDisplaySize (grootte)); } 

6. Conclusie

In deze tutorial hebben we voorbeelden geïllustreerd van het gebruik van Java en Apache Commons IO om de grootte van een bestand in het bestandssysteem te berekenen.

De implementatie van deze voorbeelden is te vinden in het GitHub-project - dit is een op Maven gebaseerd project, dus het moet gemakkelijk te importeren en uit te voeren zijn zoals het is.