Alternate 1
Mobile

Java Laufwerke gruppieren

Anub1s

Lieutenant
Registriert
Aug. 2006
Beiträge
720
Hallo zusammen,

ich möchte eine Liste aller Dateien auf allen Laufwerken erstellen (unter Windows). Prinzipiell ist das soweit kein Problem, die Laufwerksbuchstaben bekomme ich über File.listRoots(). Von jeder Wurzel aus könnte ich dann rekursiv in die Verzeichnisse absteigen.
Jetzt hatte ich mir überlegt, das ganze mit Threads zu parallelisieren. Für jedes Laufwerk einen Thread erstellen, der mir das ganze in eine globale Liste einfügt, ist auch kein Problem.
Das Problem ist jetzt, dass ich beispielsweise 2 Festplatten habe, auf der ersten die Partitionen C: und D:, auf der zweiten die Partitionen E: und F:. Wenn ich nun 4 Threads laufen lasse, dann arbeiten die ersten beiden auf der selben physikalischen Festplatte. Ich vermute mal, dass das durch das ständige Hin- und Herspringen des Festplattenkopfes deutlich langsamer wird, als wenn ich erst C:, und danach D: verarbeite.
Ich suche also nach einer Möglichkeit herauszufinden, welche Laufwerksbuchstaben dem gleichen physikalischen Laufwerk zugeordnet sind. Im obigen Beispiel würde ich also 2 Thread erstellen, der erste verarbeitet zunächst C:, dann D:, der zweite beginnt zeitgleich mit E:, und liest im Anschluss F:.
Habe ich mit Java da eine Möglichkeit, das umzusetzen?

MfG Anub1s
 
Mit Java kommst du meines Wissens nicht soweit auf Hardware Ebene runter, um Seriennummern oder Aehnliches auszulesen. Leider.


MfG SaxnPaule
 
Das hieße dann, dass ich mir (zumindest für diese Abfrage) nativen Code einbinden muss? Werd mich mal informieren, was es da für Möglichkeiten in Java gibt.
 
Ich habe beim kurzen Googeln nur die Moeglichkeit gefunden per Wrapper C# Code einzubinden.
 
Japp, das ist leider etwas zu "nativ". Mir würde spontan auch nur die Bridge zu C# einfallen. Da fordert die Portierbarkeit nunmal ihren Tribut...

Fraglich ist jedoch ob man das ganze nicht über eine COM Schnittstelle versuchen könnte, die C# Code anspricht, welcher deine Abfrage macht und diese dann an dich zurückliefert. Müsstest mal recherchieren was es da für Möglichkeiten gibt. Meines Wissens gibt es aber bereits Bridges die dir das ermöglichen sollten.
 
Zuletzt bearbeitet:
Zurück
Oben