Méthode Java File length()

Java File Java File


File.length()est en Javajava.io.Fileune méthode courante de la classe, utilisée pour obtenir la taille d'un fichier (en octets). Cette méthode renvoie unelongvaleur de type, représentant la longueur en octets du fichier spécifié.

Syntaxe de la méthode

public long length()

Valeur de retour

Renvoie la taille du fichier en octets. Si le fichier n'existe pas ou s'il s'agit d'un répertoire, renvoie0L。


Cas d'utilisation

length()Cette méthode est particulièrement utile dans les cas suivants :

  1. Vérifier si la taille du fichier répond aux exigences
  2. Surveiller les modifications de la taille du fichier
  3. Calculer l'utilisation de l'espace disque
  4. Afficher la progression pendant le téléversement/téléchargement de fichier

Exemple d'utilisation de base

Exemple 1 : Obtenir la taille d'un fichier

Exemple

import java.io.File;

public class FileLengthExample {
    public static void main(String[] args) {
        File file = new File("example.txt");
       
        if (file.exists()) {
            long fileSize = file.length();
            System.out.println("Taille du fichier : " + fileSize + " octets");
        } else {
            System.out.println("Le fichier n'existe pas");
        }
    }
}

Explication de code

  1. CréezFileun objet pointant vers le fichier cible
  2. Vérifier si le fichier existe
  3. S'il existe, appelerlength()la méthode pour obtenir la taille du fichier
  4. Afficher les informations sur la taille du fichier

Notes

1. Lorsque le fichier n'existe pas

Si le fichier n'existe pas,length()la méthode renvoie0au lieu de lever une exception. Par conséquent, il est préférable de vérifier si le fichier existe avant de l'appeler :

Exemple

if (file.exists()) {
    long size = file.length();
    // Gérer la taille du fichier
} else {
    // Logique de gestion d'un fichier inexistant
}

2. Lorsqu'il s'agit d'un répertoire

Pour les répertoires,length()la méthode renvoie également0. Si vous avez besoin d'obtenir la taille d'un répertoire, vous devez calculer récursivement la taille de tous les fichiers dans le répertoire.

3. Liens symboliques

Si le fichier est un lien symbolique,length()la valeur renvoyée est la taille du fichier réel pointé par le lien.

4. Gestion des fichiers volumineux

Puisquelength()la valeur de retour estlongtype, il peut gérer des fichiers jusqu'à 2^63-1 octets (environ 8EB), ce qui est suffisant pour la plupart des scénarios.


Utilisation avancée

Exemple 2 : Formatage de la taille de fichier

Exemple

import java.io.File;

public class FileSizeFormatter {
    public static void main(String[] args) {
        File file = new File("largefile.zip");
        long size = file.length();
       
        System.out.println("Taille d'origine : " + size + " bytes");
        System.out.println("Taille formatée : " + formatFileSize(size));
    }
   
    public static String formatFileSize(long size) {
        if (size < 1024) {
            return size + " B";
        }
        int exp = (int) (Math.log(size) / Math.log(1024));
        char unit = "KMGTPE".charAt(exp-1);
        return String.format("%.1f %sB", size / Math.pow(1024, exp), unit);
    }
}

Exemple de sortie

原始大小: 1500000 字节
格式化大小: 1.4 MB

Considérations de performance

File.length()L'appel de méthode est léger car il interroge uniquement les métadonnées du système de fichiers et ne lit pas réellement le contenu du fichier. Cependant, vous devez faire attention dans les cas suivants :

  1. Système de fichiers réseau: L'accès aux métadonnées sur un système de fichiers distant peut présenter de la latence
  2. Appels fréquents: Si vous devez obtenir fréquemment la taille des fichiers, envisagez de mettre en cache les résultats
  3. Surveillance en temps réel: Pour les scénarios où vous devez surveiller en temps réel les changements de taille de fichier, vous devrez peut-être combinerWatchServiceuse

FAQ

Q1 : Pourquoi l'appel de length() sur un répertoire renvoie-t-il 0 ?

R : Dans la plupart des systèmes de fichiers, un répertoire lui-même n'occupe pas d'espace de stockage (ou occupe un petit espace fixe). La méthode `length()` est conçue pour renvoyer 0 pour les répertoires.

Q2 : La méthode length() bloque-t-elle ?

R : Généralement non, sauf si vous accédez à un système de fichiers réseau aux conditions réseau médiocres.

Q3 : Comment obtenir la taille totale d'un répertoire ?

R : Vous devez parcourir récursivement tous les fichiers du répertoire et accumuler leurs valeurs `length()`.

Résumé

File.length()Il s'agit d'une méthode simple mais pratique pour obtenir des informations sur la taille des fichiers. Lors de son utilisation, vous devez faire attention aux cas limites tels que l'existence du fichier et le fait qu'il s'agisse d'un répertoire. Combinée à d'autres méthodes d'opération sur les fichiers, vous pouvez créer une fonctionnalité puissante de traitement de fichiers.

Java File Java File

Autres extensions