JFileChooser Pfadübergabe mit Leerzeichen geht nicht

Status
Nicht offen für weitere Antworten.
S

Stromausfall

Gast
Hallo,

ich bin neu in der Java Programmierung und hatte letztens einen 5 Tages Kurs.
Also daher bin ich noch ein richtiger Anfänger :)

Ein Programm hatte ich schon lange im Kopf und nun wollte ich aufgrund des Kurses
die Idee in Java realisieren.

Es geht um ein einfaches Programm, bei dem man mit Hilfe einer GUI einfach ein Quellverzeichnis und
ein Zielverzeichnis auswählt und dann per Knopfdruck einen Ordner kopiert.

Das Programm soll unter Macintosh und Linux funktionieren.
Geschrieben habe ich den Quellcode unter Mac und unter Windows.

Das Programm ist fertig und es funktioniert auch problemlos.
Ein Freund hat mir geholfen, denn soweit wäre ich alleine nicht gekommen :)

Nun funktioniert das Programm nur, solange kein Leerzeichen im Ordner Namen ist :(
Dann wird der Copy Befehl nämlich nicht richtig übergeben.

Nur mal als Beispiel unter Windows:

> xcopy C:\work D:\ --funktioniert
> xcopy C:\work to do D:\ --funktioniert nicht

Ist auch klar das der Befehl nicht klappt, da hier ja die Gänsefüßchen für den Pfad weg sind.

> xcopy "C:\work to do" D:\ -- würde wieder funktionieren

Ich bin mir nicht sicher, aber ich habe das Gefühl, der JFileChooser Dialog übergibt
den Pfad schon nicht richtig.

Code:
    private File oeffneDateidialog() {
        JFileChooser dialog = new JFileChooser();
        dialog.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        dialog.showOpenDialog(copyprogramm.this);
        File pfadname = dialog.getSelectedFile();
        
        return pfadname;

Das Ergebnis aus dem Dialog wird weitergegeben:

Code:
    private void setzeQuellVerzeichnis() {
        //        Wenn der Anwender beim Dialog auf Abbrechen drückt kommt hier null an!
        File quelle = oeffneDateidialog();
        if (quelle != null) {
            cmd.setQuellVerzeichnis(quelle.toString());

und danach in einer anderen Klasse in einen String übergeben:

Code:
    public String getBefehl() {
        xcopyBefehl= "xcopy" + getQuellVerzeichnis() + " " + getZielVerzeichnis();
        System.out.println(xcopyBefehl);
        
        return xcopyBefehl;

der dann ausgeführt wird:

Code:
public void xcopyAufruf() {
        try {
            Process proc = Runtime.getRuntime().exec(cmd.getBefehl());
        } catch (Throwable t) {
            t.printStackTrace();

Ich habe wirklich schon sehr viel Zeit mit Suchen verbracht.
Die Forums Hilfe habe ich auch schon benutzt. Aber irgendwie komme ich nicht weiter :(
Der Befehl soll am Schluss mit Rsync funktionieren, aber um die ganze Sache erstmal
zu untersuchen, habe ich xcopy eingegeben.

Die Pfad Ermittlung über JFileChooser habe ich auch schon mit getPath, oder getAbsolutePath oder allen anderen
möglichen Methoden probiert.
Außerdem habe ich auch mal direkt einen String aus dem JFileChooserDialog zurückgeben lassen.

Klappt aber leider auch nicht.

Habt ihr vielleicht eine Idee oder einen Tipp für mich.
Ich würde das Programm ganz gerne nutzen :)

Danke euch schonmal

Gruß
Markus
 

thE_29

Top Contributor
Ist zwar OT aber warum kopierst du die Dateien nicht einfach mit Java?!

Und der JFileChooser gibt dir den Pfad schon richtig zurück!

Du müsstest nur " hinparsen, weil woher soll der xcopy Befehl wissen, wenn du da ein Leerzeichen im Namen hast, dass das eigentlich noch immer das Verzeichnis ist und nicht ein anderer Parameter?!


Nachtrag: Verzeichnis kopieren http://www.exampledepot.com/egs/java.io/CopyDir.html
 
S

Stromausfall

Gast
Wie gesagt, es soll ja am Ende der Rsync Befehl anstatt der Copy Befehl rein.
Somit will ich ein simples Backup Programm erstellen. (rsync A zu B)
Rsync ändert dann nur noch inkrementell usw. und kopiert nicht immer alles komplett.

XCopy habe ich zum Testen nur genommen, da ich unter Windows Rsync ja nicht standardmässig dabei habe.

Wie genau kann ich das mit dem "hinparsen" machen ?

Danke und Gruß
Markus

Edit: Sorry, hätte das mit dem Rsync vielleicht vorher schon schreiben sollen.
 

thE_29

Top Contributor
Naja, du musst einfach einen Pfad mit Leerzeichen unter " " stellen, da er weiß dass das ganze nur 1 Parameter ist!

Das sollte es eigentlich gewesen sein!
 
S

Stromausfall

Gast
Danke für den Tipp :)

Ich habe nun eine Lösung gefunden.
Vermutlich gibt es eine bessere und geschicktere Lösung, aber ich habs zumindest so hinbekommen.

Code:
    private StringBuffer oeffneDateidialog() {
        JFileChooser dialog = new JFileChooser();
        dialog.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        dialog.showOpenDialog(superrsyncprogramm.this);
        String pfadname = dialog.getSelectedFile().getPath();
        StringBuffer pfadMitGaensefuesschen = new StringBuffer(pfadname); 
        char val = '"'; 
        pfadMitGaensefuesschen.insert( 0, val );   
        pfadMitGaensefuesschen.append(val);   
        
        return pfadMitGaensefuesschen;

Ich wusste mir nicht anders zu helfen und habe einfach das Ergebnis aus dem
File Dialog in einen StringBuffer übergeben und da dann die Anführungszeichen
hinzugefügt.

Jetzt ist nur noch die Frage ob das auch bei meinem Mac funktioniert.
Muss das die Tage mal testen.
Beim Mac sind nämlich Leerzeichen mit einem Backslash markiert.

Also z.B. "Users/markus/work to do" wird dann zu "Users/markus/work\ to \do".

Wie man das dann lösen könnte ist mir leider sehr schleierhaft.
Danke an thE_29 :)

Gruß
Markus
 

thE_29

Top Contributor
du hättest auch einfach mit + " adden können ;)

pfadname = "\"" + pfadName + "\"";

Das wars ;)

Und unter Linux werden Leerzeichen auch mit \ makiert! Aber es geht beides!

Also zB.: cd bla\ blu
oder cd "bla blu"

Geht bei mir beides ;)
 
S

Stromausfall

Gast
:oops:

Zitat: "du hättest auch einfach mit + " adden können"

Ja, das funktioniert auch und ist besser.
Meine Lösung war -- naja, sagen wir mal kreativ :)

Also nochmal vielen vielen Dank.
Du kannst dir gar nicht vorstellen, wie sehr mich das freut.

Jetzt werde ich heute Abend noch ein bißchen den Code anpassen zwecks Mac und so und dann
bin ich mal gespannt.

Gruß
Markus
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Tommy135 JFileChooser ist sehr langsam AWT, Swing, JavaFX & SWT 13
T JFileChooser ist Englisch und bleibt Englisch und bleibt Englisch... AWT, Swing, JavaFX & SWT 15
M Swing jFileChooser Header viewTypeDetails setFont AWT, Swing, JavaFX & SWT 0
I JFileChooser mit System L&F bei anderem L&F der eigtl. Anwendung AWT, Swing, JavaFX & SWT 0
Meeresgott AWT JFileChooser bestimmte Ordner anzeigen AWT, Swing, JavaFX & SWT 16
S Swing JFileChooser best. Ordner wie Dateien behandeln AWT, Swing, JavaFX & SWT 4
H Swing JFileChooser für nicht existierendes Unterverzeichnis AWT, Swing, JavaFX & SWT 3
javampir Swing Anzeige der FileFilter im JFileChooser AWT, Swing, JavaFX & SWT 0
L JFileChooser Datentyp Unterscheidung AWT, Swing, JavaFX & SWT 6
K JFileChooser NullPointerException AWT, Swing, JavaFX & SWT 7
H JFileChooser Dateinamen vorgeben (Save Dialog) AWT, Swing, JavaFX & SWT 9
Neumi5694 Swing JFilechooser - Detailansicht AWT, Swing, JavaFX & SWT 0
M JFileChooser Look and Feel AWT, Swing, JavaFX & SWT 2
T JFileChooser Rahmenfarbe ändern AWT, Swing, JavaFX & SWT 1
K Pfad mit JFileChooser ausgeben lassen AWT, Swing, JavaFX & SWT 7
C JFileChooser hängt bei Ausführung mit Terminal AWT, Swing, JavaFX & SWT 2
T Swing JFileChooser und FileView AWT, Swing, JavaFX & SWT 4
M Einzelne Ordner im JFileChooser ausgrauen? AWT, Swing, JavaFX & SWT 4
H Swing JFileChooser inline editing AWT, Swing, JavaFX & SWT 4
D JFileChooser anpassen AWT, Swing, JavaFX & SWT 5
AssELAss Verzeichnis JFileChooser aktualisieren AWT, Swing, JavaFX & SWT 0
A JFileChooser Datei speichern AWT, Swing, JavaFX & SWT 4
A Datei weiterverwenden mit JFileChooser AWT, Swing, JavaFX & SWT 6
T Importer-Auswahl im JFileChooser AWT, Swing, JavaFX & SWT 3
N JFileChooser bzw. FileDialog Problem AWT, Swing, JavaFX & SWT 10
A Swing JFileChooser - Größenänderung nach Aufruf von showOpenDialog() AWT, Swing, JavaFX & SWT 15
D Serverdirectory auf Client browsen mit JFileChooser AWT, Swing, JavaFX & SWT 7
F icon aus exe auslesen mithilfe des JFilechooser ? AWT, Swing, JavaFX & SWT 4
C JFileChooser und Netzwerk Laufwerke AWT, Swing, JavaFX & SWT 4
Iron Monkey JFileChooser - Drag and Drop AWT, Swing, JavaFX & SWT 5
J JFileChooser - Datei speichern AWT, Swing, JavaFX & SWT 7
M Element aus JList eines JFileChooser entfernen AWT, Swing, JavaFX & SWT 3
P JFileChooser mit verschidene Endungen AWT, Swing, JavaFX & SWT 12
S Swing Ordner im JFileChooser auswählen AWT, Swing, JavaFX & SWT 2
C JFileChooser bringt parent durcheinander AWT, Swing, JavaFX & SWT 2
N JFileChooser mit Dateinamenvorgabe AWT, Swing, JavaFX & SWT 9
S JFileChooser GTK (Ubuntu) "hässlich" AWT, Swing, JavaFX & SWT 2
A Swing JFileChooser mit modifiziertem Kontextmenü AWT, Swing, JavaFX & SWT 4
S JFileChooser öffnet den falschen Ordner AWT, Swing, JavaFX & SWT 4
A Swing JFilechooser zeigt verzeichnisse nicht an AWT, Swing, JavaFX & SWT 2
A Swing JFileChooser - Anzeige in Echtzeit filtern AWT, Swing, JavaFX & SWT 10
M JFileChooser umbenennen verbieten AWT, Swing, JavaFX & SWT 4
Helgon JFileChooser öffnet sich 2x AWT, Swing, JavaFX & SWT 12
K JFileChooser mit Zusatzfunktionen AWT, Swing, JavaFX & SWT 8
GUI-Programmer JFilechooser, mehrere Datein selektieren und Reihenfolge (2) AWT, Swing, JavaFX & SWT 8
V JFileChooser auf Mac und Netzwerkordner AWT, Swing, JavaFX & SWT 2
B JFileChooser breite der Spalten? AWT, Swing, JavaFX & SWT 5
M JFileChooser setCurrentDirectory() - Verzeichnis relativ zum Code/binary AWT, Swing, JavaFX & SWT 14
P Swing Dateinamen im JFileChooser vorschlagen AWT, Swing, JavaFX & SWT 11
M JFileChooser Abfangen des DateiTypen möglich?? AWT, Swing, JavaFX & SWT 5
T Swing JFileChooser --> Desktop und Laufwerke im "Suchen in" - Drop Down AWT, Swing, JavaFX & SWT 3
N JFileChooser - Keine Funtkion AWT, Swing, JavaFX & SWT 13
T JFileChooser - "Öffnen-Button" aktivieren/deaktivieren möglich??? AWT, Swing, JavaFX & SWT 2
jueki Aktuell eingestellten Filter aus einem JFileChooser abfragen. AWT, Swing, JavaFX & SWT 5
F Swing JFileChooser - Dateinamen nicht editierbar machen AWT, Swing, JavaFX & SWT 8
I Fehler bei JFileChooser AWT, Swing, JavaFX & SWT 2
K JFileChooser mehrere Dateien markieren ohne STRG AWT, Swing, JavaFX & SWT 4
Ivan Dolvich [Linux] JFileChooser sieht komisch aus... AWT, Swing, JavaFX & SWT 12
M Zurück-Button in JFileChooser AWT, Swing, JavaFX & SWT 9
N JFileChooser AWT, Swing, JavaFX & SWT 4
D Problem mit JFileChooser -> Daten werden mit anführungsstriche in JTable geschrieben AWT, Swing, JavaFX & SWT 8
S JFileChooser Dateiname Autovervollständigung AWT, Swing, JavaFX & SWT 2
B JDialog über JFileChooser anzeigen AWT, Swing, JavaFX & SWT 6
I Swing JFileChooser '\' im Pfad... AWT, Swing, JavaFX & SWT 2
K Swing JFileChooser zum Speichern - FileFilter AWT, Swing, JavaFX & SWT 2
M Swing Execption beim JFileChooser AWT, Swing, JavaFX & SWT 4
kodela Swing JFileChooser und die Datei-Extension AWT, Swing, JavaFX & SWT 3
jueki eigenen Button in JFileChooser einfügen AWT, Swing, JavaFX & SWT 7
alderwaran jFileChooser showSaveDialog, dateinamen werden mit pfadnamen überschrieben beim navigieren AWT, Swing, JavaFX & SWT 1
B Swing Suche JFileChooser zum Speichern AWT, Swing, JavaFX & SWT 2
Iron Monkey JFileChooser DIRECTORIES_ONLY AWT, Swing, JavaFX & SWT 4
Semox Swing JFileChooser: Problem Approve oder Cancel abzufangen AWT, Swing, JavaFX & SWT 7
H JTree - nach Auswahl aus JFileChooser wird nur der erste Knoten angezeigt AWT, Swing, JavaFX & SWT 3
kodela Sicherheitsabfrage mit JFileChooser AWT, Swing, JavaFX & SWT 2
DARK_ZERATO2 jFileChooser AWT, Swing, JavaFX & SWT 4
G JFileChooser Problem AWT, Swing, JavaFX & SWT 4
G Swing JFileChooser Event für neue Directory? AWT, Swing, JavaFX & SWT 5
P JFileChooser AWT, Swing, JavaFX & SWT 2
M Swing JFileChooser und JFrame AWT, Swing, JavaFX & SWT 5
G Swing JFileChooser in einem JPanel? AWT, Swing, JavaFX & SWT 3
J JFileChooser Dateiauswahl beim Tippen einschränken AWT, Swing, JavaFX & SWT 3
M Swing JFileChooser mit Windows 7 AWT, Swing, JavaFX & SWT 8
R JFileChooser - Initiales Verzeichnis auswählen AWT, Swing, JavaFX & SWT 8
brainray JFileChooser - es sollen nur Ordner wählbar sein AWT, Swing, JavaFX & SWT 2
T JFileChooser Problem AWT, Swing, JavaFX & SWT 3
N Mit JFileChooser ein Verzeichnis auswählen AWT, Swing, JavaFX & SWT 7
M Swing JFileChooser und versteckte Ordner AWT, Swing, JavaFX & SWT 2
F jFileChooser verwenden AWT, Swing, JavaFX & SWT 4
M Swing ImageIcon über JFileChooser einbinden AWT, Swing, JavaFX & SWT 4
F JFileChooser mal wieder AWT, Swing, JavaFX & SWT 2
ARadauer Swing JFileChooser mit Bildvorschau AWT, Swing, JavaFX & SWT 5
H Swing Dateiauswahldialog mit JFileChooser funktioniert unzuverlässig AWT, Swing, JavaFX & SWT 11
G Swing JFileChooser nur in Verzeichnis+Unterverzeichnisse AWT, Swing, JavaFX & SWT 5
K Swing JFileChooser AWT, Swing, JavaFX & SWT 6
M JFileChooser einschränken AWT, Swing, JavaFX & SWT 3
L JFileChooser braucht lang zum öffnen AWT, Swing, JavaFX & SWT 2
S NullPointerException bei JFileChooser AWT, Swing, JavaFX & SWT 8
M JFilechooser defaultdirectory AWT, Swing, JavaFX & SWT 5
C JFilechooser this.setAlwaysOnTop AWT, Swing, JavaFX & SWT 2
G JFileChooser - erkennen v. existierenden Dateien ohne Endung AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen


Oben