# Windows Verknüpfungen.



## cui23 (3. Sep 2008)

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:


```
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


----------



## Wildcard (3. Sep 2008)

Ja, musst du weil symbolic links erst mit Windows Vista eingeführt wurden. Diese .lnk Dateien sind Behelfskrücken.


----------



## Ark (3. Sep 2008)

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


----------



## Wildcard (3. Sep 2008)

Indem du eine Liste aller Treffer (Einschränkung auf Verzeichnisse ist möglich) führst und bei erneutem Fund aussteigst.


----------



## _cui23 (4. Sep 2008)

Ich hab grade die Klasse

```
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


----------



## Wildcard (4. Sep 2008)

Die darfst du sowieso nicht verwenden, weil es eine Klasse aus einem sun Package ist.


----------



## foobar (4. Sep 2008)

Wildcard hat gesagt.:
			
		

> Ja, musst du weil symbolic links erst mit Windows Vista eingeführt wurden. Diese .lnk Dateien sind Behelfskrücken.



Bei MS hat die Zukunft begonnen. Willkommen in der Gegenwart  :bae:


----------



## Gast2 (4. Sep 2008)

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 (4. Sep 2008)

mogel hat gesagt.:
			
		

> hmmm ... werde wohl doch auf Vista umsteigen


Lieber gleich auf ein echtes Betriebssystem, siehe links  :wink:


----------



## cui23 (4. Sep 2008)

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.


----------



## maki (4. Sep 2008)

>> Nur so aus interesse, warum darf ich die nicht verwenden? Hab da mit google keinen ersichtlichen Grund gefunden.. 
http://java.sun.com/products/jdk/faq/faq-sun-packages.html


----------



## Leroy42 (4. Sep 2008)

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:


----------



## cui23 (4. Sep 2008)

Leroy42 hat gesagt.:
			
		

> Wildcard hat gesagt.:
> 
> 
> 
> ...


Gibts unter Vista eigentlich endlich grep? :wink:


----------



## maki (4. Sep 2008)

> 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.


----------



## Wildcard (4. Sep 2008)

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.


----------

