Я пытаюсь проанализировать файл библиотеки XML iTunes в Mac OS.Как декодировать путь и открыть связанный файл?
В файле Itunes У меня есть эта строка:
<key>Location</key>
<string>file://localhost/home/user/Downloads/album/01%C4%2024%5F7%20%28Intro%29%20&.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) &.mp3"
2.0.0p247 :004 > CGI.unescape(str)
=> "file://localhost/home/user/Downloads/album/01\xC4 24_7 (Intro) &.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?
- How can I open files containing accents in Java?
- How to fix java when if refused to open a file with special charater in filename?
Установка виртуальной машины Java для конкретной местности не является приемлемым, потому что мне не нужно открывать файлы только в локали пользователя.
Прежде всего, ссылка на числовой объект '&' должна быть преобразована в '&' в синтаксический анализатор XML. Какой парсер вы используете? – Joni
Я использую SAXParser для чтения файла: https://github.com/codercowboy/iTunesUtilities/blob/master/src/com/worldsworstsoftware/xmltagparser/SimpleXMLTagParser.java#L124 и получить место назад. –