Dateigröße von Ordnern ermitteln

Pete121

Mitglied
Huhu,
ich hab eine Methode geschrieben die von einer bestimmten Datei die Dateigröße ausliest. Nun möchte ich es zusätzlich machen, dass wenn man einen Ordner angibt in diesem Ordner und auch in allen Unterordner die größe ermittelt wird, allerdings nur eines bestimmtest Dateityps (z.B. .RAR) . Ich hab leider wirklich keine Ahnung wie ich es anstellen soll. Irgendwas muss ich denke ich mit Rekursion machen. Leider habe ich auch damit null Erfahrung...🙁
Hier erstmal meine Methode, die die Dateigröße ausliest:
Java:
private String lengthMBytes;

    
    public String leseGröße(String File){
        try {
            RandomAccessFile r = new RandomAccessFile(File, "r");

            double lengthBytes = r.length();
                       
            lengthBytes = lengthBytes / 1048576;
            DecimalFormat lengthFormat =   new DecimalFormat  ( ",##0.00" );
            lengthMBytes = lengthFormat.format(lengthBytes);          
            }
        catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return lengthMBytes;
    }

Mfg
 
muss schon rekursiv sein, weil listFiles ja wieder ordner liefert, von denen man wiederrum listFiles aufrufen und davon alle dateien addieren muss und so weiter.

wie gesagt. s. link oben. sollte denke da ganz gut passen

edit: angefangen zu schreiben, bevor du editiert hast 🙂
 
Hi, ich denke schon das mir das helfen würde. Allerdings hab ich das Problem, dass ich den code einfach nicht ganz verstehe, deswegen schaff ich es nicht es an meinem Problem anzupassen 🙁
 
Naja es fängt schon bei der ersten Methode an:
Java:
public class FileTreeParser {
 
    public Directory parse(File root) {
        Directory directory = new Directory(root);
        File[] files = root.listFiles();
        if (files != null) {
            for (File f : files) {
                if (f.isDirectory()) {
                    directory.addSubDirectory(parse(f));
                } else {
                    directory.addFile(f);
                }
            }
        }
        return directory;
    }
}

Is das Directory der Rückgabewert? Weil von so einen Datentyp hab ich noch nie etwas gehört. Zudem verstehe ich einfach nicht was die Methode bezwecken soll, dass liegt einfach daran das ich mich einfach noch nicht so lange mit Java beschäftige und mir die nötigen Erfahrungen und kenntnisse fehlen...
 
Directory ist die Klasse, die gleich darunter ist 🙂

Die Methode macht folgendes:

Java:
public class FileTreeParser {
 
    public Directory parse(File root) {
        Erstelle mir ein Objekt directory von dem Pfad root
        Hole mir alle Dateien und Ordner in diesem Verzeichnis
        if (Das holen erfolgreich war) {
            for (Iteriere mir über alle Dateien und Ordner von root) {
                if (Die aktuelle Datei ein Verzeichnis ist) {
                    Füge dem Objekt directory ein Unterverzeichnis hinzu (das unterverzeichnis ist ein selbstaufruf);
                } else {
                   Füge dem Objekt directory die Datei hinzu;
                }
            }
        }
        Liefer mir das directory mit allen unterrodner und datein und deren unterordner und datein und so weiter und so fort;
    }
}
 
Ahh danke für die super erklärung 🙂 Ich hab das soweit hinbekommen, dass mit der größe auslesen. Aber da ich die Directory Klasse wohl noch öfter brauchen werde, um noch andere Sachen auszulesen, werde ich dieses Thema mal vorsichtshalbar noch nicht als Erledigt makieren. :applaus:
 

Neue Themen


Zurück
Oben