2012-03-25 4 views
1

Angenommen, Sie haben mehrere Verzeichnisse, die alle auf derselben Partition vorhanden sind. Nehmen wir an, Sie möchten die Gesamtzahl der Bytes finden, die von allen in jedem Verzeichnis verwendet werden, was ist eine gute Möglichkeit, das zu tun? Wenn ich Java File und Apache FileUtils betrachte, kann ich nur Informationen zur Festplattennutzung über die Partition erhalten, aber was ich brauche ist, dass ich das auf ein bestimmtes Verzeichnis beschränken kann.Java 1.6, So erhalten Sie die Gesamtzahl der Bytes, die von allem in einem angegebenen Verzeichnis verwendet werden

Example: 

    Partition X: 100GB 

    Root directories: 

    /x/1/ 
    /x/2/ 
    /x/3/ 

Deeper directories can exist under each root directory: 

/x/1/files/a/deeper/path/test.txt 
    /x/2/files/test.txt 
    /x/3/files/path/to/files/test.txt 

Goal: 

long byteSumForX1 = ?? 

Sagen Sie die 3 oben Pfade unter Partition x vorhanden ist, würde ich die Gesamtzahl der Bytes in der Lage sein wie die von jedem Stammverzeichnis oben angegebenen verwendet zu finden. Die Summe müsste rekursiv sein und alle Dateien und Verzeichnisse innerhalb des Wurzelverzeichnisses enthalten.

Irgendwelche Ideen? Ich würde es vorziehen, einige vorhandene Bibliothek dafür zu nutzen, wenn eine existiert (vorausgesetzt/hoffe es tut)

+0

beschränkt ist Die meisten Werkzeuge, die Ihnen nur gibt die Länge der Dateien, nicht die tatsächlich verwendete Größe. Zum Beispiel kann eine Datei mit 1 Byte 512B oder 4KB Speicherplatz belegen. Dateien mit längeren Namen können mehr Speicherplatz belegen (abhängig vom Dateisystemtyp). Wenn Sie eine Sparse-Datei haben, kann deren Länge um ein Vielfaches (möglicherweise 1000x größer) als die tatsächlich verwendete Größe sein. –

Antwort

3

Ths einfachste Lösung wäre, die sizeOfDirectory() Methode zu verwenden, die in der FileUtils Klasse von Apache Commons gefunden wird. Angeben der Javadocs:

Zählt die Größe eines Verzeichnisses rekursiv (Summe der Länge aller Dateien).

Parameter: Verzeichnis - Verzeichnis zu überprüfen, darf nicht null

Returns sein: Größe des Verzeichnisses in Bytes, 0, wenn Verzeichnis Sicherheit

+1

Genau das, was ich gesucht habe, danke! – Hoofamon

Verwandte Themen