# In Java das Verzeichnis wechseln



## zilti (13. Mai 2007)

Gibt es einen Befehl, mit dem man in einer Java-Anwendung das Verzeichnis wechseln kann?


----------



## doctus (13. Mai 2007)

Was meinst du mit "Verzeichniss wechseln"?

Lg doctus


----------



## zilti (13. Mai 2007)

So etwas wie der "cd"-Befehl in der Konsole, nur eben in Java.


----------



## Tr3kk3r (13. Mai 2007)

Du kannst auf beliebige Dateien zugreifen, indem du ein neues File - Objekt erstellst und des einem FileInputStream übergibst.. das verzeichnis, in dem dein programm liegt, kriegst du über die property "user.dir"


es ist in java nicht möglich und auch überhaupt nicht notwendig, so wie in der windows konsole das verzeichnis zu wechseln....

&edit: erläuter mal wofür du das brauchst


----------



## zilti (13. Mai 2007)

Aber kann man bei exec wenigstens das Arbeitsverzeichnis angeben? Ich habe ein Programm, das von einer Website gestartet wird, und als Arbeitsverzeichnis das Verzeichnis benötigt, in dem es liegt. Und das scheint nicht realisierbar zu sein.


----------



## Wildcard (13. Mai 2007)

zilti hat gesagt.:
			
		

> Ich habe ein Programm, das von einer Website gestartet wird, und als Arbeitsverzeichnis das Verzeichnis benötigt, in dem es liegt.


Darf man fragen wozu?


----------



## zilti (13. Mai 2007)

Weil es noch Programme gibt, die das benötigen.


----------



## Wildcard (13. Mai 2007)

Was du machen kannst ist etwas in die Richtung:

```
new File("blubb").getAbsolutPath();
```


----------



## zilti (13. Mai 2007)

Und das ist dann dasselbe wie "Arbeitsverzeichnis"? Wo das auszuführende Programm liegt, weiss ich, aber das Programm (nicht von mir) muss im Verzeichnis gestartet werden, in dem es liegt.


----------



## Wildcard (13. Mai 2007)

zilti hat gesagt.:
			
		

> Wo das auszuführende Programm liegt, weiss ich, aber das Programm (nicht von mir) muss im Verzeichnis gestartet werden, in dem es liegt.


Das geht nicht. Du kannst das user.dir nicht ändern.


----------



## zilti (13. Mai 2007)

Hmm...
Würde dann folgende Möglichkeit funktionieren:
Ein Applet startet ein Java-Programm im Verzeichnis, in welchem das 3.-Programm liegt.
Arbeitet dann das Java-Programm vom Verzeichnis aus, in dem es liegt?


----------



## Wildcard (13. Mai 2007)

Ich will jetzt nicht behaupten das ich es 100% sicher sagen kann, aber das dürfte so nicht funktionieren, da sich das user.dir dadurch nicht endet.

Welches Programm ist so dämlich nicht zu funktionieren wenn ich es /pfad/zum/programm starte?


----------



## Roar (13. Mai 2007)

zilti hat gesagt.:
			
		

> Aber kann man bei exec wenigstens das Arbeitsverzeichnis angeben?


ja, einmal in die dokumentation gucken bitte  :###  :roll:


----------



## zilti (15. Mai 2007)

Ich habe jetzt folgendes versucht:

```
Process p = r.exec("sat.exe",,execdir);
```
Aber da motzt er:"Illegal start of expression".
Und wenn ich 
	
	
	
	





```
Process p = r.exec("sat.exe","",execdir);
```
eingebe, heisst es:"cannot find symbol". Aber nach dieser Seite sollte es funktionieren!
execdir ist vom Typ File.
Und noch was: Wenn du schon weisst, dass es geht, ist einem wirklich mehr geholfen, kurz zu schreiben, WIE es geht, anstatt auf eine Anleitung/Referenz zu verweisen, die nicht existiert.


----------



## Guest (15. Mai 2007)

zilti hat gesagt.:
			
		

> Ich habe jetzt folgendes versucht:
> 
> ```
> Process p = r.exec("sat.exe",,execdir);
> ...



Ich glaube wohl, dass es eine Java-API gibt!!!  :autsch:


----------



## zilti (15. Mai 2007)

Und wenn es eine Java-API gibt, ist es unmöglich, schnell zu schreiben, wie der Befehl aussehen muss? Du musst ja keine seitenlange Erklärung posten. Ich wüsste nicht einmal, nach was ich in der API suchen müsste.


----------



## Guest (15. Mai 2007)

zilti hat gesagt.:
			
		

> Und wenn es eine Java-API gibt, ist es unmöglich, schnell zu schreiben, wie der Befehl aussehen muss? Du musst ja keine seitenlange Erklärung posten. Ich wüsste nicht einmal, nach was ich in der API suchen müsste.



Der folgende LINK hat mich ca. 20 Sekunden Zeit gekostet:

Java-API --> Runtime

Wenn man etwas programmieren will, sollte man auch ein wenig Eigenarbeit leisten.


----------



## Roar (15. Mai 2007)

zilti hat gesagt.:
			
		

> Und wenn es eine Java-API gibt, ist es unmöglich, schnell zu schreiben, wie der Befehl aussehen muss? Du musst ja keine seitenlange Erklärung posten. Ich wüsste nicht einmal, nach was ich in der API suchen müsste.


natürlich wusstest du es. du hast die "exec" methode sogar schon selber erwähnt :autsch:


----------



## zilti (15. Mai 2007)

Und jetzt kannst du mir bestimmt noch auf meine Frage antworten, warum es nicht funktioniert:


> Ich habe jetzt folgendes versucht:
> Code:
> 
> 1
> ...


----------



## Roar (15. Mai 2007)

funktioniert nicht weil variante 1 kein gültiges java ist und variante 2 geht nicht weil es keine methode exec(String, String, File) gibt. aber das steht ja auch alels in der dokumentation


----------



## zilti (15. Mai 2007)

In der Dokumentation steht, dass es exec(String, String[], File) gibt.
Und anstelle von String[] kann man ja auch String verwenden, oder muss ich da irgendwelchen Müll in ein Array schreiben? Ich denke nicht, dass Java so... "billig" ist. Was kann ich denn tun wenn ich nur ein exec(Programm, Arbeitsverzeichnis) will?


----------



## Roar (15. Mai 2007)

zilti hat gesagt.:
			
		

> Und anstelle von String[] kann man ja auch String verwenden,


nein, seit wann das denn...


> oder muss ich da irgendwelchen Müll in ein Array schreiben?


anscheinend ist es doch zu viel verlangt die dokumentatino zu lesen:


			
				Dokumentation hat gesagt.:
			
		

> The environment variable settings are specified by envp. If envp is null, the subprocess inherits the environment settings of the current process.





> Ich denke nicht, dass Java so... "billig" ist.


na mit sowas würd ich mich aber zurückhalten


----------

