Taille du fichier en Java

Taille du fichier en Java

1. Vue d'ensemble

Dans ce rapide didacticiel, nous allons apprendre à obtenir lessize of a file in Java - en utilisant Java 7, le nouveau Java 8 et Apache Common IO.

Enfin, nous obtiendrons également une représentation lisible par l’homme de la taille du fichier.

2. E / S Java standard

Commençons par un exemple simple de calcul de la taille d'un fichier - en utilisant la méthodeFile.length():

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

Nous pouvons tester notre implémentation relativement simplement:

@Test
public void whenGetFileSize_thenCorrect() {
    long expectedSize = 12607;

    File imageFile = new File("src/test/resources/image.jpg");
    long size = getFileSize(imageFile);

    assertEquals(expectedSize, size);
}

Notez que, par défaut, la taille des fichiers est calculée en octets.

3. Avec Java NIO

Ensuite, voyons comment utiliser la bibliothèque NIO pour obtenir la taille du fichier.

Dans l'exemple suivant, nous utiliserons l'APIFileChannel.size() pour obtenir la taille d'un fichier en octets:

@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. Avec Apache Commons IO

Ensuite, voyons comment obtenir la taille du fichier en utilisantApache Commons IO. Dans l'exemple suivant, nous utilisons simplementFileUtils.sizeOf() pour obtenir la taille du fichier:

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

Notez que, pour les fichiers à sécurité limitée,FileUtils.sizeOf() indiquera la taille comme zéro.

5. Taille lisible par l'homme

Enfin, voyons comment obtenir une représentation plus lisible par l'utilisateur de la taille du fichier en utilisantApache Commons IO - pas seulement une taille en octets:

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

Dans ce tutoriel, nous avons illustré des exemples d'utilisation de Java et d'Apache Commons IO pour calculer la taille d'un fichier dans le système de fichiers.

L'implémentation de ces exemples peut être trouvée dansthe GitHub project - il s'agit d'un projet basé sur Maven, il devrait donc être facile à importer et à exécuter tel quel.