Загрузить файл в java со специальным именем пути

#java #windows #escaping #media-player

#java #Windows #экранирование #медиаплеер

Вопрос:

я пытаюсь воспроизвести mp3 из местоположения на моем жестком диске.

Файл находится здесь:

C:ItunesMusicEminemШоу Эминема [Явное] 18 ‘, пока я не сверну [Явное].mp3

В этом пути много специальных символов, таких как [ и ‘ . Когда я пытаюсь загрузить файл со следующим кодом:

 path = URLEncoder.encode(path, "UTF-8");
Media hit = new Media("file:///" path);
MediaPlayer mediaPlayer = new MediaPlayer(hit);
mediaPlayer.play();
  

я получаю ошибку «недопустимый символ» в имени пути.

Моя операционная система — Windows 8.

Я очень новичок в Java и надеюсь, что найду какую-то помощь.

Ответ №1:

Я считаю, что вам нужно закодировать свой URI

Смотрите: http://blogs.msdn.com/b/ie/archive/2006/12/06/file-uris-in-windows.aspx

Комментарии:

1. Я не понимаю, что вы хотите, чтобы я сказал. Я пытаюсь загрузить URI из файла, подобного пути к файлу. toUri() и загрузить путь из uri в медиаплеер. Это не работает.

2. О, извините, я не очень хорошо прочитал ваш код! Выдает ли медиа-конструктор ошибку? Или URLEncoder выдает его?

3. Я думаю, что на самом деле это медиа-конструктор, выдающий ошибку. Проверьте это . Может показаться, что URI, который вы пытались использовать, не соответствует стандарту rfc2396… Если вы перейдете на страницу 10 здесь , вы увидите, что квадратные скобки указаны как «неразумные». Я бы попробовал просто распечатать экранированный путь и дважды проверить, что все нечетные символы действительно экранированы.

4. C:Itunes5CMusicEminemThe Eminem Show [Explicit]18 ‘Till I Collapse [Explicit]. mp3 — это мой закодированный путь к файлу. Кодируется с помощью UTF-8.

5. У вас есть какая-либо дополнительная информация об ошибке? Трассировка стека?