# Problem mit URL und Prozentzeichen (Maskierung)



## lumpeh (6. Jun 2007)

Hio

ich habe folgendes kleines Problem. Ich möchte mit Java einen mp3 Player programmieren (mit der javax.media Bib). So, dazu benötigt man einen "MediaLocator". Diesem gibt man im Konstruktor eine URL an, die auf die Resource (in meinem Fall eine mp3 Datei auf meinem Rechner) verweist.
Soweit so gut.

Nun hab ich meine Kompletten mp3s folgendermaßen strukturiert: %Genre\%Interpret\...<usw> , das wichtige ist, dass ich alles mit dem Prozenzeichen "%" trenne, hab ich mir so angewöhnt.
Nun muss in einer URL das Prozentzeichen maskiert werden, da das %zeichen für etwas reserviert ist. Die Maskierung ist "%25".

Nun hab ich in Java ein File Objekt und möchte das FileObjekt dem MediaLocator über die URL geben. Also schreibe ich:


```
File file = new File("C:\\%test\\01.mp3");
MediaLocator mediaLocator = new MediaLocator(file.toURI().toURL());
```

Nun bekomm ich ne FileNotFound Exception. Über "toURI" wird alles schön maskiert, also "%" wird "%25" und dann toURL() gibt mir die URL

nur findet er die Datei nicht...

nenne ich den Quellordner z.B. "&test" funkioniert es ...
Also akzeptiert der MediaLocato keine Maskierten Zeichen in einer URL? oder funktioniert der ganze Spass nicht für URLs die auf Dateien mit "file:/" referenzeren? Ich weiß nicht mehr weiter ..


----------



## das da (7. Jun 2007)

http://www.java-forum.org/de/viewtopic.php?t=45663&highlight=unicode


----------



## lumpeh (8. Jun 2007)

danke für die antwort, aber der URLEncoder wandelt mir alle sonderzeichen um
dann hab ich sowat wie "file%3A%2FF%3A%2F%2525%2520test%2F01.mp3" 

klappt nicht ...


----------



## Gast (8. Jun 2007)

> Nun hab ich meine Kompletten mp3s folgendermaßen strukturiert: %Genre\%Interpret\...<usw> , das wichtige ist, dass ich alles mit dem Prozenzeichen "%" trenne, hab ich mir so angewöhnt.



1. Also eine häßliche aber effektvolle Lösung wäre % als Trennzeichen nicht zu verwenden und stattdessen <deinTrennzeichen> zu benutzen. 


Ehm ich bin nicht sicher ob ich genau verstehe was du schreibst.


```
File file = new File("C:\\%test\\01.mp3");
MediaLocator mediaLocator = new MediaLocator(file.toURI().toURL());
```

Du möchstest hier die Datei C/test/01.mp3 öffnen?! und wenn du eine % schreibst findet er sie nicht, weil er nach dem Ordner %test sucht. Und wenn du den Ordner %test nennst, findet er ihn natürlich. 

Ehrlich gesagt machst du dir hier selbst ein Problem.
Ich würde sagen vergiss das % Zeichen als Trennzeichen. 

Gruß


----------



## lumpeh (9. Jun 2007)

ich benutze % ein wenig anders, es ist zur besseren Übersichtlichkeit usw
trotzdem will ich kein programm haben, das bei nem % im Pfad abbricht. % ist nunmal ein gültiges Ordnersymbol.


----------

