Ce programme prend trop de temps pour calculer le répertoire Windows sous c:/Windows. Comment le faire aussi vite que le système d'exploitation donne la taille d'un répertoire. Calcul de la taille du répertoire ou du fichier
import java.io.File; import java.util.Scanner;
public class DirectorySize { public static void main(String[] args) { // Prompt the user to enter a directory or a file System.out.println("Enter a directory or a file: "); Scanner input = new Scanner(System.in); String directory = input.nextLine(); // Display the size System.out.println(getSize(new File(directory)) + " bytes"); } public static long getSize(File file) { long size = 0; // Store total size of all files if(file.isDirectory()) { File[] files = file.listFiles(); // All files and subdirectories for(int i = 0; files != null && i < files.length; i++) { size += getSize(files[i]); // Recursive call } } else { size += file.length(); } return size; } }
Une petite amélioration peut être de vérifier si les fichiers [i] est un répertoire avant de faire l'appel récursif. Cela permettra d'économiser beaucoup d'appels récursifs inutiles. – shlomi33
Peut utiliser cette solution: http://stackoverflow.com/questions/2149785/get-size-of-folder-or-file – BachT
BTW, pourquoi écrire ce code seul? Quelqu'un d'autre l'a fait avant toi + probablement l'a optimisé! Regardez ici org.apache.commons.io.FileUtils.sizeOfDirectory – shlomi33