Windows Verknüpfungen.

Status
Nicht offen für weitere Antworten.

cui23

Mitglied
Hi.

Ich hab folgendes Problem:

Ich möchte alle Dateien aus einem Verzeichnis rekursiv auslesen und meinetwegen in ne Liste schreiben. Dabei möchte ich aber natürlich auch symbolic links (also Verknüpfungen unter Windows) auf Ordner folgen und ihr "Inhalte" sollen in der Liste dementsprechend auch auftauchen.

Das ganze sieht bisher ungefähr so aus:

Code:
private void fillFileList(File dir, List<File> l) {
	if (dir.isDirectory()) {

		for (File f : dir.listFiles()) {

			if (f.isDirectory()) {
				this.fillFileList(f, l);
			} else {
				if (f.isFile())
					l.add(f);
			}

		}

	}
}

Unter Linux folgt das einwandfrei auch symbolic links auf Verzeichnisse, aber unter Windows werden Verknüpfungen auf Ordner (*.lnk) nicht als Ordner erkannt.

Wie kann ich jetzt herausfinden ob es sich um einen Ordner handelt und seinen Inhalt auslesen (oder muss ich evtl. erst umständlich die Datei auslesen etc.?) ?

lg,
cui
 
Ja, musst du weil symbolic links erst mit Windows Vista eingeführt wurden. Diese .lnk Dateien sind Behelfskrücken.
 
Ich habe ein ähnliches/verwandtes Problem: Wie vermeide ich unendliche Rekursionen, wenn ein (symbolischer) Link auf ein Verzeichnis zeigt, das schon einmal abgearbeitet wurde, bzw. wie vermeide ich mehrfaches Vorbeikommen an Dateien (egal, ob Hard- oder Softlink)?

Ark
 
Indem du eine Liste aller Treffer (Einschränkung auf Verzeichnisse ist möglich) führst und bei erneutem Fund aussteigst.
 
Ich hab grade die Klasse
Code:
sun.awt.shell.ShellFolder
dazu gefunden.. aber die scheint alle möglichen GUI bibliotheken mit zu laden...

Weil auslesen will ichs nicht wirklich.

lg,
cui
 
Moin,
Wildcard hat gesagt.:
Ja, musst du weil symbolic links erst mit Windows Vista eingeführt wurden.
hmmm ... werde wohl doch auf Vista umsteigen

Diese .lnk Dateien sind Behelfskrücken.
Du gehst zu freundlich mit diesem Müll um ... mir stellt sich die Frage wieso das erst jetzt unter Vista eingeführt wird ... oder ist da ein Trivial-Patent ausgelaufen was nicht MS gehörte ???:L

hand, mogel
 
Wildcard hat gesagt.:
Die darfst du sowieso nicht verwenden, weil es eine Klasse aus einem sun Package ist.
Nur so aus interesse, warum darf ich die nicht verwenden? Hab da mit google keinen ersichtlichen Grund gefunden..

Ne andere Bibliothek für .lnk's scheints jedenfalls nicht zu geben soweit ich das sehe (oder kennt zufällig jemand eine?).. das manuelle Auslesen aus diesem ganzen Binary-Müll der .lnk datei is mir dann auch zu dumm ehrlich gesagt^^

lg,
cui.
 
Wildcard hat gesagt.:
Ja, musst du weil symbolic links erst mit Windows Vista eingeführt wurden. Diese .lnk Dateien sind Behelfskrücken.

Das heißt, Microsoft hat es tatsächlich erst 30 Jahre nach Unix
geschafft vernünftige symbolic links zu realisieren? :shock:

:applaus:
 
Leroy42 hat gesagt.:
Wildcard hat gesagt.:
Ja, musst du weil symbolic links erst mit Windows Vista eingeführt wurden. Diese .lnk Dateien sind Behelfskrücken.

Das heißt, Microsoft hat es tatsächlich erst 30 Jahre nach Unix
geschafft vernünftige symbolic links zu realisieren? :shock:

:applaus:
Gibts unter Vista eigentlich endlich grep? :wink:
 
Gibts unter Vista eigentlich endlich grep? icon_wink.gif
Nein, aber dafür tolle grafische Gimmiks die nix bringen ausser Ressourcen zu verschwenden und zuvor unbekannte Bugs die noch nicht mal einen Namen haben.
 
maki hat gesagt.:
Nein, aber dafür tolle grafische Gimmiks die nix bringen ausser Ressourcen
Die Gimmiks sind grafisch weniger aufwendig als auf Mac und Linux, brauchen aber deutlich mehr Resourcen. Wie sie das hinbekommen haben ist mir immer noch nicht ganz klar.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben