# Problem beim Öffnen von Video-Dateien mit VLC (Leerzeichen)



## DavidC (26. Oktober 2008)

Hi Leute,

ich hoffe jemand kann mir bei meinem Problem helfen:
Ich hab ein Programm, welches praktisch ein eigener Explorer für meine Videodateien darstellt. D. h. es sucht mir alle Videodateien aus einem bestimmten Pfad und zeigt die dann in einer jList an. Wenn ich jetzt eine bestimmte Datei in der Liste anklicke, soll diese mit dem VLC Media Player geöffnet werden. Das funktioniert auch, aber NUR wenn sich im gesamten Pfad keine Leerzeichen befinden. Wenn sich ein Leerzeichen im Pfad befindet hängt sich der VLC Media Player auf.

Hier mal die wichtigen Teile des Codes:

*GUI-Klasse*


```
...
String player = "C:\\Programme\\VideoLAN\\VLC\\vlc.exe";
...
private void onShowVideoFile(java.awt.event.MouseEvent evt) 
{                              
     File videoFile= new File("hier steht mein pfad mit den leerzeichen");
     mbl.openVideoFile(player, videoFile);
}
...
```

*Business-Layer Klasse (mbl)*

```
...
public void openVideoFile(String player, File videoFile)
    {
        try
        {
            Runtime.getRuntime().exec(player + " " + videoFile);
        } catch (IOException ex)
        {
            Logger.getLogger(ManagerBL.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error 301 - Could not start video file!");
        }
    }
...
```


Weiß jemand, wie ich das in den Griff bekommen könnte, ohne gleich meine ganzen Dateien händisch umzubennen?


----------



## Anime-Otaku (27. Oktober 2008)

Was sagt denn die Api...:

http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html

Kurzum, du übergibst ein String[] und jedes String ist wie wenn du es in der Kommandozeile mit Leerzeichen trennst.

Wobei ProcessBuilder seit Java 5 der bevorzugte Weg ist.


----------



## mehirc (30. Oktober 2008)

Hi,

der gesamte Pfad mit Leerzeichen sollte in Anführungszeichen stehen, probiers mal damit:


```
Runtime.getRuntime().exec(player + " " + "\"" + videoFile + "\"");
```

Gruß,
Michael


----------



## DavidC (30. Oktober 2008)

@mehirc:

Danke für die Antwort. Hab's gleich ausprobiert, und es funktioniert super. Danke nochmals


----------



## Anime-Otaku (31. Oktober 2008)

Wie gesagt, der richtige Weg wäre:

Wenn >=Java5:

```
ProcessBuilder pb = new ProcessBuilder(player, videoFile);
Process p = pb.start();
```

ansonsten:


```
Runtime.getRuntime().exec(new String[]{player,videoFile});
```

Dadurch übernimmt Java für dich das escapen was je nach Betriebssystem unterschiedlich ist.


----------

