2012-10-16 5 views
5

Ich listet alle verfügbaren Laufwerke auf meinem Desktop auf, die File.listRoots() in Java verwenden. Ich habe einige gemappte Laufwerke. Wenn ich die Wurzeln listet, holt es mich lokale Laufwerke sowie zugeordnete Laufwerke. Um die zugeordnete Laufwerke auszuschließen verwendet I Schnipsel folgenden Code:Identifiziertes zugeordnetes Laufwerk von lokalem Laufwerk

for (File drive :File.listRoots()){ 
    String typeDescription = FileSystemView.getFileSystemView().getSystemTypeDescription(drive); 
} 

von der Art Beschreibung basiert zurückgegeben ich den Antrieb am Filterung. Dies ist jedoch nicht allgemein üblich und von anderen Betriebssystemen nicht akzeptabel. Nur für Windows unterstützt. Außerdem gibt es eine Sprachbeschränkung (Englisch wird nur für die Typbeschreibung unterstützt). Kann mir jemand eine andere Lösung geben, um die zugeordneten Laufwerke global zu filtern?

Hinweis:
Es muss

+1

Jede andere Lösung wird plattformspezifisch sein. Aber seit _All verfügbar Drives_ ist nur ein Windows-Begriff Sie suchen wahrscheinlich nur Windows-Lösung? –

+0

@ Oleg Mikheev. Ja .. Ich suche nur nach Lösung in Windows. Aber in Linux-Maschine File.listRoots() gibt nur Root dir zurück. Also kein Problem in Linux. Ich muss zwischen zugeordnetem Laufwerk und lokalem Laufwerk in Windows-Plattform unterscheiden ... –

+0

löschte meine Antwort. Ich habe es gerade auf OS X versucht und sehe das Problem, das Sie haben. Ich werde eine andere Antwort posten, wenn ich an etwas denke. – Dave

Antwort

1

zu JDK1.6 spezifisch Wenn Ihr Problem nur in Windows ist, warum nicht verwenden:

if (System.getProperty("os.name").contains("Windows"))?

Sie könnten ein C++ Programm schreiben, es (human) Sprache unabhängig IVdsDisk::GetProperties mit tun, und importieren Sie es dann als native Funktion in Java (und die VM sagen, nur versuchen, die native Methode ausgeführt werden soll, wenn Sie Windows ausführen .

MSDN link to get you started

überprüfen Sie, ob VDS_DISK_PROP.dwMediaType ein FILE_DEVICE_NETWORK oder ein FILE_DEVICE_NETWORK_FILE_SYSTEM ist Sie können sehen, alle unterstützten Typen hier:. winioctrl.h

Es ist möglich, dass der Wert in Java zugänglich ist, aber Java hat normalerweise keine plattformspezifischen Dinge, also bezweifle ich es.

+0

@ durron597 .. Ich kann Betriebssystem mit Code-Snippet unterscheiden, die Sie oben erwähnt haben .. Aber denke, dieses Szenario, wenn ich Windows-Betriebssystem in einer anderen Sprache als Englisch installiert habe, kann ich nicht die "Type description" verwenden, um die zugeordneten Laufwerke zu unterscheiden und lokale Laufwerke. Wenn ich sie durch die "type description" unterscheiden möchte, muss ich nach der Sprache des Betriebssystems suchen, bevor ich das Laufwerk vom lokalen Laufwerk identifiziere. Es kann zu einer Anzahl von bedingten Prüfungen führen, wie viele Sprachen in Windows Os gefunden werden. –

+0

@vigneshkumarrathakumar: Ich habe den Beitrag aktualisiert, der dir vielleicht weiterhelfen kann! – durron597

Verwandte Themen