Hallo,
ich schreibe gerade ein Programm dass eine oder mehrere Festplatten scannt.
Dabei hangelt es sich einfach durch alle Dateien.
Um grafisch darzustellen, wie weit das Programm schon ist, ermittele ich bevor ich anfange
erstmal die Grösse aller Platten in Bytes (angenommen es ist nur 1 Platte):
dann fange ich mit dem durchhangeln durch die Ordner und Dateien an, und lasse mir dabei
von jeder Datei & Ordner, wo ich gerade bin, die Grösse ermitteln und zu dem Wert hinzuzählen,
der bisher erreicht wurde beim Durchhangeln:
(Die Methode bekommt als Parameter die komplette Festplatte übergeben, genauer:
und jetz das problem:
wenn er fertig ist habe ich nicht 100%, sondern immer nur 82%.
D.h.: Die Grösser aller Dateien und Ordner, durch die er sich gehangelt hat, entspricht am Ende nicht
der Grösse der Plattenbelegung, die ich mir am Anfang geholt habe.
Die Frage ist also: Ist das ein logischer Fehler von mir, oder verwende ich die falschen Methoden für die Ermittlung der Grösse?
Danke!
ich schreibe gerade ein Programm dass eine oder mehrere Festplatten scannt.
Dabei hangelt es sich einfach durch alle Dateien.
Um grafisch darzustellen, wie weit das Programm schon ist, ermittele ich bevor ich anfange
erstmal die Grösse aller Platten in Bytes (angenommen es ist nur 1 Platte):
Code:
bytesTotal = festplatte.getTotalSpace() - festplatte.getFreeSpace();
dann fange ich mit dem durchhangeln durch die Ordner und Dateien an, und lasse mir dabei
von jeder Datei & Ordner, wo ich gerade bin, die Grösse ermitteln und zu dem Wert hinzuzählen,
der bisher erreicht wurde beim Durchhangeln:
(Die Methode bekommt als Parameter die komplette Festplatte übergeben, genauer:
Code:
processFile ( festplatte.listFiles());
Code:
private void processFile(File[] files) {
if(files.length > 0){
for (int i = 0; i < files.length; i++) {
// recursive processing until a normal file found
if (files[i].isDirectory()) {
bytesProcessed += files[i].length(); // <- das meine ich! sollte ja auch byte sein
if(files[i].listFiles() != null){
processFile(files[i].listFiles());
}
// normal file found!
} else {
bytesProcessed += files[i].length(); // <- auch hier wird es dazu gezählt
}
}
}
}
und jetz das problem:
wenn er fertig ist habe ich nicht 100%, sondern immer nur 82%.
D.h.: Die Grösser aller Dateien und Ordner, durch die er sich gehangelt hat, entspricht am Ende nicht
der Grösse der Plattenbelegung, die ich mir am Anfang geholt habe.
Die Frage ist also: Ist das ein logischer Fehler von mir, oder verwende ich die falschen Methoden für die Ermittlung der Grösse?
Danke!