Hallo zusammen,
meine Aufgabe ist es, die Verzeichnisgröße sowie die Anzahl der Dateien in einem Verzeichnis zu ermitteln. Ich muss mich an einem vorgegebenen Template orientieren. (Eigentlich ist es gewünscht alles in die eine Methode "dirStats" reinzuklatschen, jedoch wusste ich nicht wie ich das machen soll, deshalb habe ich noch eine weitere Methode erstellt.)
Nun muss die Rekursion, die durch die obere Aufgabe ensteht durch einen Thread Pool mit Work Stealing parallelisiert werden. Da fängt bei mir das Problem an. Kann mir jemand vielleicht erklären, was man darunter versteht und wie man es einsetzt? Wäre echt klasse! Wo muss ich es implementieren etc..
Hier der Code:
Ich hoffe mir kann jemand diesbezüglich helfen. Meine Anfängerbücher reichen leider nicht mehr aus :rtfm:
meine Aufgabe ist es, die Verzeichnisgröße sowie die Anzahl der Dateien in einem Verzeichnis zu ermitteln. Ich muss mich an einem vorgegebenen Template orientieren. (Eigentlich ist es gewünscht alles in die eine Methode "dirStats" reinzuklatschen, jedoch wusste ich nicht wie ich das machen soll, deshalb habe ich noch eine weitere Methode erstellt.)
Nun muss die Rekursion, die durch die obere Aufgabe ensteht durch einen Thread Pool mit Work Stealing parallelisiert werden. Da fängt bei mir das Problem an. Kann mir jemand vielleicht erklären, was man darunter versteht und wie man es einsetzt? Wäre echt klasse! Wo muss ich es implementieren etc..
Hier der Code:
Java:
public class DirSize {
private int dateiZaehler;
private int verzeichnisZaehler;
private long verzeichnisGroesse;
public DirStats dirStats(File dir) throws IOException {
DirStats dirStats = new DirStats();
dateiZaehler = 0;
verzeichnisZaehler = 0;
verzeichnisGroesse = 0;
this.dateiListe(dir);
dirStats.fileCount = dateiZaehler + verzeichnisZaehler;
dirStats.totalSize = verzeichnisGroesse;
return dirStats;
// TODO: Ãœber work-stealing Threadpool verteilte Berechnung hier
// einfügen
// throw new NotImplementedException();
}
private void dateiListe(File file) {
if (file == null) {
return;
}
File liste[] = file.listFiles();
verzeichnisZaehler++;
if (liste != null) {
for (int i = 0; i < liste.length; i++) {
if (liste[i].isFile() == true) {
dateiZaehler++;
verzeichnisGroesse += liste[i].length();
} else {
dateiListe(liste[i]);
}
}
}
}
public static void main(String[] args) throws IOException {
/*
* if (args.length<1) {
* System.out.println("Benötigter Parameter: Startverzeichnis");
* System.exit(1);
* }
*
* File startDir = new File(args[0]);
* if(!startDir.isDirectory()) {
* System.out.println("Dies ist kein Verzeichnis!"); System.exit(1); }
*/
System.out.println();
File file = new File("C:\\");
DirSize test = new DirSize();
DirStats result = test.dirStats(file);
System.out.println(result.fileCount + " Dateien, " + result.totalSize
+ " Bytes.");
}
}
Java:
public class DirStats {
int fileCount;
long totalSize;
public DirStats() {
fileCount = 0;
totalSize = 0;
}
public DirStats(int fileCount, long totalSize) {
this.fileCount = fileCount;
this.totalSize = totalSize;
}
@Override
public String toString() {
return "DirStats(fileCount=" + fileCount + ", totalSize=" + totalSize + ")";
}
}
Ich hoffe mir kann jemand diesbezüglich helfen. Meine Anfängerbücher reichen leider nicht mehr aus :rtfm: