# Java Kommandozeilen Argumente



## Leno (16. Aug 2011)

Hi liebes Forum,

ich habe da ein Problem ich möchte Argumente über Eclipse Kommandozeile übergeben. 
Es soll ein String mit dem Pfad übergeben werden wo z.B.ein Java KeyStore liegt oder eine Datei liegt die ich einlesen möchte z.B.folgenden Pfad:

C:\\Dokumente und Einstellungen\\Leno\\Desktop\\Nachricht.txt

wenn ich jetzt über Kommandozeile dies alsArgument übergebe kann er die Datei nicht finden ! obwohlSie auf demDesktop liegt also auf dem Pfad. Ich glaube es liegt an den leerzeichen imPfad selbst java hat glaube ich damit Probleme.


```
String pfad = args[0]; //
```

ist das so richtig ?

wer kann mir helfen Danke


----------



## nillehammer (16. Aug 2011)

Ich glaube, es liegt an den verdoppelten Backslashes. Nimm einfache Bacslashes (C:\Dokumente und Einstellungen\Leno\Desktop\Nachricht.txt), dann müsste es gehen.


----------



## SlaterB (16. Aug 2011)

teste als Argumente [c]hallo welt "hallo welt" [/c],
teste mit
[c]System.out.println(Arrays.toString(args));[/c]

> Ich glaube es liegt an den leerzeichen imPfad 

eine System.out.println()-Ausgabe hätte dir den Glauben erübrigt und Wissen geschenkt 
(also zumindest bestätigt dass der Pfad genau beim ersten Leerzeichen abbricht, über den Grund kann man ja gerne noch spekulieren)


----------



## Leno (16. Aug 2011)

nein leider klappt nicht mit den Backsl..
Wenn ich testweise den String ausgebe bekomme ich nur dies ;(
C:/Dokumente
der Rest wird anscheinden verschluckt.


----------



## nrg (16. Aug 2011)

programmargumente werden nach leerzeichen getrennt unter berücksichtigung von " als qualifier (siehe auch SlaterB).

also hast du bei 
	
	
	
	





```
C:\\Dokumente und Einstellungen\\Leno\\Desktop\\Nachricht.txt
```
drei Argumente

```
C:\\Dokumente
und
Einstellungen\\Leno\\Desktop\\Nachricht.txt
```

edit: also kurz gesagt musst du das Argument einfach (wie Slater schon sagte) qualifizieren


----------



## Leno (16. Aug 2011)

Also sowas würde gehen.

```
String messagePath = args[3] +" "+args[4] + " "+args[5];
```

aber die Lösung ist nicht grad schön also ich gebe als KommandozeilenArgumentdas ein 

C:\\Dokumente
und
Einstellungen\\Leno\\Desktop\\Nachricht.txt

aber der Pfad wird durch die Leerzeichen getrennt und dann als eigenes Argument interpretiert.
Hat jemand eine elegantere Lösung ?


----------



## faetzminator (16. Aug 2011)

Wie bereits mehrfach gesagt, setz das Argument einfach zwischen [c]"[/c].


----------



## Leno (16. Aug 2011)

OK ich verstehe die Lösung schon nur nehmen wir mal an ich möchte mehrere Argumente verarbeiten.
Also mehrere Pfadangaben z.B. dann erhalte ich z.B.durch folgenden 

Arrays.toString(args);

Ergbit dann folgendendes bei mir also Testweise -->

[co, so, so, C:\Dokumente, und, Einstellungen\Leno\Desktop\Nachricht.txt]

wie kann ich dann an die einzenen Werte kommen mussich die dann noch zerlegen ? 

Leno


----------



## SlaterB (16. Aug 2011)

Arrays.toString(args);
ist eine Visualisierung des Arrays, diesen String musst du nicht parsen,
du kannst wie zuvor mit Index im args-Array arbeiten

bisher war deine Frage lediglich wie du den Pfad zusammenhängend übergeben kannst, das ist geklärt,
auch wenn dein Beispiel anzeigt, dass du anscheinend immer noch keine Anführungszeichen benutzt?

hast du nun eine komplett andere weitere Frage?


----------



## Leno (16. Aug 2011)

Ok verstehe ich übergebe die Werte in der Kommandozeile so

C:\\Dokumente" "und" "Einstellungen\\Leno\\Desktop\\Nachricht.txt

Danke vielmals für die Hilfe


----------



## SlaterB (16. Aug 2011)

nein, so:
"C:\\Dokumente und Einstellungen\\Leno\\Desktop\\Nachricht.txt"


----------

