# Versteckte Datei erzeugen - Plattformunabhängigkeit bewahren



## Guest (2. Mai 2005)

Hallo!

Was muss ich tun, um eine versteckte Datei zu erzeugen? 
Ich habe gesehen, dass es in der Klasse File eine Methode "isHidden()" gibt mit der man prüfen kann, ob eine Datei versteckt ist oder nicht. Ich konnte jedoch keine Methode finden um eine versteckte Datei zu erzeugen.  :cry: 

Danke!


----------



## L-ectron-X (2. Mai 2005)

Laut API-Doc können auf einem Unix-System Dateien mit Hilfe eines voran gesetzten Punktes versteckt werden. Unter Windows werden dazu Datei-Attribute im Dateisystem gesetzt. Also müsste das Attrib-Komando benutzen werden, um eine Datei zu verstecken, was eine Benutzung der Klasse _java.lang.Runtime_ mit sich bringt.


----------



## thE_29 (2. Mai 2005)

Bsp.:


```
Runtime.getRuntime().exec("cmd /c attrib +H meinedatei.exe");
```

Sollte das Attribut setzen!

Gibt man keine Datei an, so werden die Dateien im aktuellen Verzeichns (aufpassen!! cmd /c startet eine neue Konsole mit dem def Verzeichnis) geändert (glaube sogar alle - aber nicht in den Unterordnern)


----------



## Guest (2. Mai 2005)

Danke für eure Antworten. Wenn ich euch richtig verstanden habe, dann wird also das platformunabhängige Erzeugen einer verteckten Datei nicht unterstüzt. D.h. ich muss selbst feststellen auf welchem System sich die Applikation befindet und dann die Attribute ändern (Windows) bzw. eine ".Dateiname" - Datei (Unix) erzeugen.

Wie kann ich feststellen, ob ich mich auf einem Windows oder Unix System befinde?


----------



## Wildcard (2. Mai 2005)

```
System.getProperty("os.name");
```


----------



## Guest (2. Mai 2005)

Eine Frage noch:
Die Ausgabe von "System.getProperty("os.name");" bei meinem Rechner ist "Windows 2000". Wie mache ich da die Abfrage am Besten? Eigentlich hätte ich ja nur 2 Fälle (Unix und windows). Das Problem ist, dass ich ja nicht weiss, was getProperty("os.name") liefert, d.h nach welchem Kriterium mache ich die Unterscheidung. Bei einem Windows system könnte ich ja eventuell noch nach dem String "Windows" suchen - dann müssten eigentlich alle Windows Systeme abgedeckt sein (egal ob win 2000, xp, etc.). Aber wie ist das bei diversen Linux und Unix Systemen ?


----------



## thE_29 (3. Mai 2005)

```
if(System.getProperty("os.name").indexOf("Windows") != -1)
  System.out.println("IRGENDEINE Windows Variante");
else
  System.out.println("Linux/Unix/Mac");
```


Vielleicht noch so


```
if(System.getProperty("os.name").toLowerCase().indexOf("windows") ......
```


----------



## L-ectron-X (3. Mai 2005)

@the_29: Berichtigst Du bitte noch deinen ersten Post in diesem Thread?


----------



## thE_29 (3. Mai 2005)

Lol 

Ich hab jetzt 2 min. lang den Beitrag angesehen und dachte mir, was willst du bloß, obwohl man es eindeutig gesehen hat


----------



## Guest (3. Mai 2005)

Vielen Dank!


----------



## Buzweed (18. Nov 2005)

Hi, 

ich hätt hier auch noch ein Problem mit der versteckten Datei:

Ich habe jetzt folgendes geschrieben:


```
DataOutputStream out = new DataOutputStream(new FileOutputStream(System.getProperty("user.home")+
System.getProperty("file.separator")+"reg.rl"));
Runtime.getRuntime().exec("cmd /c attrib +H reg.rl");
```

Es wird bei mir aber keine Konsole geöffnet und die Datei ist auch nicht versteckt.

Das macht er auch nicht wenn ich schreibe:


```
Runtime.getRuntime().exec("cmd /c attrib +H " + System.getProperty("user.home")+
System.getProperty("file.separator")+"reg.rl");
```


Weiß einer woran das liegt ?

€: Mein OS wäre im Moment Windows 2000


----------

