probleme mit per commandozeile übergebenen pfaden

Status
Nicht offen für weitere Antworten.

dermoritz

Bekanntes Mitglied
ich hab ein java programm welches als argument eine datei bekommt. solange man die datei ohne pfad übergibt (also im selben verzeichnis wie das programm aufbewahrt) ist alles wunderbar. aber wenn man einen pfad übergibt gibts eine fehlermeldung "malformed url... unknown protocoll" vom saxparser. (ich lese eine datei mach eine kleine änderung an ihr und speichere sie an der selben stelle wie die quelldatei)

mein verdacht ist ja, das die '\' und oder leerzeichen dem programm nicht gefallen bzw. das der constructor der diesen pfad enthält in nicht als dateipfad interpretiert sondern als url.

die frage ist was kann man da machen? windows datei pfade sind ja nicht die unüblichsten und cunstructors die 'string file' aufnehmen sollten doch damit klar kommen oder gibt es eventuell eine klasse/routine die windows pfade in java kompatible pfade umwandelt?

edit: es schein am leerzeichen im pfad zu liegen - kann man da was machen auf java seite oder sind java programm nicht kompatibel zu leerzeichen in pfadangaben?
 
du vermischst da zwei Probleme, die du im Grunde völlig unabhängig voneinander behandeln könntest,
zunächst mal das Einlesen des Dateipfades, gib den im Programm mit System.out.println aus, untersuche nach \, Leerzeichen und was immer du vermutest und teste ihn letztendlich im Vergleich zu einem im Programm erstellten Pfad:

String pfad = "C: /...";

das hat alles nix mit SaxParser zu tun

evtl. brauchst du einen Aufruf wie:
java MeinProgramm "C: /a und b/test.xml"


------------------


eine ganz andere Frage ist, was der SaxParser erwartet und du ihn übergibst, ob File, String oder sonstwas,
das kannst du alles genausogut mit Informationen direkt aus dem Quelltext oder einer graphischen Oberfläche oder sonstwoher prüfen,

dieses Problem hat im Grunde nichts mit der Übergabe von Parametern beim Programmstart zu tun
 
Hiho,

yep das war auch gleich meine Idee zu Beginn, dass es an den Leerzeichen liegt!

Versuche mal:

java meinprog "c:\der pfad mit leerzeichen\datei.xml"

Also die Pfadangabe in Hochkommata!

bye Saxony
 
also die " hab ich ja verwendet - ich hab die dateien per drag and drop in die konsole gezogen. d.h. die konsole schickt den string als ganzes zum programm, aber das programm hat dann schwierigkeiten mit dem leerzeichen.

kann es sein, das es daran liegt, dass ich "String args[]" als eingabeparameter verwende? wie wird denn das array aufgebaut? trenne ich die einzelnen argumente per leerzeichen (analog zu windows kommandozeilen programmen) oder per ','?

die nächste frage wäre dann wie kann man pfade/argumente mit leerzeichen übergeben? doppelte " alss ""pfad mit leerzeichen"" eventuell?
 
wieso denn doppelte Anführungszeichen?

Parameterübergabe in Java funtioniert
Code:
public class Test
{
    public static void main(String[] args)
    {
        System.out.println(args.length + ", " + Arrays.toString(args));
    }
}
java Test "a und b"
->
1, [a und b]

--------------

alles andere liegt vielleicht an Kuriositäten wie 'per drag and drop in die konsole gezogen' ??
 
Problem sind eben die Leerzeichen, da ein Leerzeichen eigentlich die Trennung der Argumente sind!

Einfach mit " übergeben"

Also java -jar bla.jar "C:\PFAD mit leerzeichen gehören eigentlich verboten\bin\datei.txt"

Dann ist es ein Pfad! Und das hat generell gar nix mit Java zum tun! In einem C Programm würdest du das genauso kriegen (also auf mehrere Argumente aufgeteilt)

Was mir noch einfällt ist, wenn das nächste Argument an 2ter Stelle kein : hat, dann gehört es zum vorigen (nur für Windows).

Also Param1: C:\pfad\datei.txt
Param 2: C:\pfad_mit
Param 3: leerzeichen\datei.txt

Dann müsstest du den Param2 + " " + Param3 sagen.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben