2013-09-05 6 views
0

Я пытаюсь проанализировать файл библиотеки XML iTunes в Mac OS.Как декодировать путь и открыть связанный файл?

В файле Itunes У меня есть эта строка:

<key>Location</key> 
<string>file://localhost/home/user/Downloads/album/01%C4%2024%5F7%20%28Intro%29%20&#38;.mp3</string> 

Как вы можете видеть, что, как представляется, URL закодирован. Теперь следующий шаг - найти и прочитать этот файл в файловой системе, но, похоже, я не могу найти подходящий способ сделать это с помощью Java или Ruby.

Моя главная цель состоит в том, чтобы сделать это в Java, но для простоты я попробовал это в Ruby:

2.0.0p247 :003 > URI.decode(str) 
=> "file://localhost/home/user/Downloads/album/01\xC4 24_7 (Intro) &#38;.mp3" 
2.0.0p247 :004 > CGI.unescape(str) 
=> "file://localhost/home/user/Downloads/album/01\xC4 24_7 (Intro) &#38;.mp3" 

появляется файл в файловом менеджере, /home/user/Downloads/album/01Ä 24_7 (Intro) &.mp3

Java:

path = URLDecoder.decode(originalPath, "ISO-8859-1"); 
    -- 
    path = URLDecoder.decode(originalPath, "UTF-8"); 
    -- 
    path = new java.net.URI(originalPath).getPath(); 

Но я не могу найти файл, используя полученный код path. exists() или isFile() всегда неверны, хотя в отладчике путь отображается правильно.

Как я могу продолжить?

К сожалению, я не получаю имя файла из ОС, а из файла XML. Я попадаю в долговременную ошибку JVM?

Установка виртуальной машины Java для конкретной местности не является приемлемым, потому что мне не нужно открывать файлы только в локали пользователя.

+0

Прежде всего, ссылка на числовой объект '&' должна быть преобразована в '&' в синтаксический анализатор XML. Какой парсер вы используете? – Joni

+0

Я использую SAXParser для чтения файла: https://github.com/codercowboy/iTunesUtilities/blob/master/src/com/worldsworstsoftware/xmltagparser/SimpleXMLTagParser.java#L124 и получить место назад. –

ответ

0

Решено с переменной env LANG.

Смежные вопросы