Filstørrelse i Java

1. Oversikt

I denne raske opplæringen lærer vi hvordan du får tak i størrelsen på en fil i Java - bruker Java 7, den nye Java 8 og Apache Common IO.

Til slutt - vi vil også få en menneskelig lesbar fremstilling av filstørrelsen.

2. Standard Java IO

La oss starte med et enkelt eksempel på å beregne størrelsen på en fil - ved hjelp av File.length () metode:

privat lang getFileSize (filfil) {lang lengde = fil.lengde (); returlengde; }

Vi kan teste implementeringen vår relativt enkelt:

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

Merk at filstørrelsene som standard beregnes i byte.

3. Med Java NIO

Neste - la oss se hvordan du bruker NIO-biblioteket for å få størrelsen på filen.

I det følgende eksemplet bruker vi FileChannel.size () API for å få størrelsen på en fil i byte:

@Test offentlig ugyldig nårGetFileSizeUsingNioApi_thenCorrect () kaster IOException {long expectedSize = 12607; Path 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

Neste - la oss se hvordan du får filstørrelsen ved hjelp av Apache Commons IO. I det følgende eksemplet bruker vi ganske enkelt FileUtils.sizeOf () for å få filstørrelsen:

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

Merk at for sikkerhetsbegrensede filer, FileUtils.sizeOf () vil rapportere størrelsen som null.

5. Menneskelig lesbar størrelse

Til slutt - la oss se hvordan du får en mer lesbar representasjon av filstørrelsen ved hjelp av Apache Commons IO - ikke bare en størrelse i byte:

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

6. Konklusjon

I denne opplæringen illustrerte vi eksempler på bruk av Java og Apache Commons IO for å beregne størrelsen på en fil i filsystemet.

Implementeringen av disse eksemplene finnes i GitHub-prosjektet - dette er et Maven-basert prosjekt, så det skal være enkelt å importere og kjøre som det er.


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