Filstørrelse i Java

1. Oversigt

I denne hurtige vejledning lærer vi, hvordan man får størrelse på en fil i Java - ved hjælp af Java 7, den nye Java 8 og Apache Common IO.

Endelig får vi også en menneskelig læsbar gengivelse af filstørrelsen.

2. Standard Java IO

Lad os starte med et simpelt eksempel på beregning af størrelsen på en fil - ved hjælp af File.length () metode:

privat lang getFileSize (filfil) {lang længde = fil.længde (); returlængde }

Vi kan teste vores implementering relativt simpelt:

@Test offentlig ugyldig nårGetFileSize_thenCorrect () {long expectedSize = 12607; File imageFile = new File ("src / test / resources / image.jpg"); lang størrelse = getFileSize (imageFile); assertEquals (forventet størrelse, størrelse); }

Bemærk, at filstørrelserne som standard beregnes i byte.

3. Med Java NIO

Næste - lad os se, hvordan du bruger NIO-biblioteket til at få filstørrelsen.

I det følgende eksempel bruger vi FileChannel.size () API for at få størrelsen på en fil i bytes:

@Test offentlig ugyldig nårGetFileSizeUsingNioApi_thenCorrect () kaster IOException {long expectSize = 12607; Sti imageFilePath = Paths.get ("src / test / resources / image.jpg"); FileChannel imageFileChannel = FileChannel.open (imageFilePath); lang imageFileSize = imageFileChannel.size (); assertEquals (expectSize, imageFileSize); } 

4. Med Apache Commons IO

Næste - lad os se, hvordan du får filstørrelsen ved hjælp af Apache Commons IO. I det følgende eksempel bruger vi simpelthen FileUtils.sizeOf () for at få filstørrelsen:

@Test offentlig ugyldig nårGetFileSizeUsingApacheCommonsIO_thenCorrect () {long expectSSize = 12607; File imageFile = new File ("src / test / resources / image.jpg"); lang størrelse = FileUtils.sizeOf (imageFile); assertEquals (forventet størrelse, størrelse); }

Bemærk, at for sikkerhedsbegrænsede filer, FileUtils.sizeOf () vil rapportere størrelsen som nul.

5. Menneskelig læsbar størrelse

Endelig - lad os se, hvordan man får en mere brugervenlig gengivelse af filstørrelsen ved hjælp af Apache Commons IO - ikke kun en størrelse i byte:

@Test offentlig ugyldig nårGetReadableFileSize_thenCorrect () {File imageFile = ny fil ("src / test / resources / image.jpg"); lang størrelse = getFileSize (imageFile); assertEquals ("12 KB", FileUtils.byteCountToDisplaySize (størrelse)); } 

6. Konklusion

I denne vejledning illustrerede vi eksempler på brug af Java og Apache Commons IO til at beregne størrelsen på en fil i filsystemet.

Implementeringen af ​​disse eksempler findes i GitHub-projektet - dette er et Maven-baseret projekt, så det skal være let at importere og køre som det er.


$config[zx-auto] not found$config[zx-overlay] not found