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.